DEV Community

Khoa Pham
Khoa Pham

Posted on

How to parse json in Go

Unmarshal using encoding/json

  • property in struct needs to be first letter capitalized
import ( "net/http" "encoding/json" "io/ioutil" "fmt" ) type MyJsonObject struct { Id string `json:"id"` Name string `json:"name"` } type MyJsonArray struct { Data []MyJsonObject `json:"data"` } func FetchJson() { url := "https://myapp.com/json" client := http.Client{ Timeout: time.Second * 10 } request, requestError := http.NewRequest(http.MethodGet, url, nil) request.Header.Set("User-Agent", "myapp") response, responseError := client.Do(request) body, readError := ioutil.ReadAll(response.Body) fmt.Println(requestError, responseError, readError) myJsonArray := MyJsonArray{} marshalError := json.Unmarshal(body, &myJsonArray) fmt.Println(jsonResponse, marshalError) } 

Map

And how to map to another struct
https://gobyexample.com/collection-functions

func Map(vs []JsonStop, f func(JsonStop) *api.Stop) []*api.Stop { vsm := make([]*api.Stop, len(vs)) for i, v := range vs { vsm[i] = f(v) } return vsm } stops := Map(jsonResponse.Data, func(jsonStop JsonStop) *api.Stop { stop := api.Stop{ Id: jsonStop.Id, Name: jsonStop.Name, Address: jsonStop.Address, Lat: jsonStop.Lat, Long: jsonStop.Long} return &stop }) 

Original post https://github.com/onmyway133/blog/issues/199

Top comments (0)