123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- package main
- import (
- "encoding/json"
- "fmt"
- "io"
- "log"
- "net/http"
- "strings"
- )
- func UnmasrshalFromUrl(url string, v interface{}) error {
- // Usage:
- // <url> - string with web url to raw json data
- // <JsonStruct> - struct type that describes json data at <url>
- //
- // -- code --
- // var parseTo <JsonStruct>
- // err := UnmasrshalFromUrl(<url>, &parseTo)
- // -- code --
- webClient := &http.Client{}
- // Get response from url
- webResp, err := webClient.Get(url)
- if err != nil {
- log.Println(err)
- return err
- }
- // Close response body
- defer webResp.Body.Close()
- // Convert from Reader to []byte
- jsonData, err := io.ReadAll(webResp.Body)
- if err != nil {
- log.Println(err)
- return err
- }
- // Convert []byte to string
- jsonDataStr := fmt.Sprintf("%s", jsonData)
- jsonDataStr = strings.ReplaceAll(jsonDataStr, "null", "0")
- // Covenrt string ot []byte
- jsonData = []byte(jsonDataStr)
- // LogDebug.Println(v)
- return json.Unmarshal([]byte(jsonData), &v)
- }
|