Two things: 1) Capitalize users inside allUsers so it can be populated via reflection 2) Use an intermediary type to allow for that slice inside slice
https://play.golang.org/p/RvW7PMSOZlq On Wednesday, 26 September 2018 10:10:41 UTC-4, Mudasir Mirza wrote: > > Also as per the API documentation of the vendor, I am suppose to get a > response in format > > ListUserResponse { > users (Array[V1User], optional), > _selfUrl (string, optional) > } > > On Wed, Sep 26, 2018 at 6:03 PM Mudasir Mirza <mudasi...@dubizzle.com > <javascript:>> wrote: > >> Hi Steven, >> >> Thanks for your prompt response. I know that, but I can not figure out >> how to define that in my struct :( >> >> On Wed, Sep 26, 2018 at 5:55 PM Steven Hartland <ste...@multiplay.co.uk >> <javascript:>> wrote: >> >>> If you look closely they have a strange structure: >>> "users": [*[*{...},{...}*]*] >>> >>> You've created: >>> "users":[{...},{...}] >>> >>> On 26/09/2018 14:43, 'Mudasir Mirza' via golang-nuts wrote: >>> >>> Hey guys, >>> >>> I am fairly new to GoLang, still learning. >>> >>> I am trying to working on a small utility, which fetches details from a >>> third party. >>> As per their documentation, I will get response something like >>> >>> { >>> "users": [ >>> [ >>> { >>> "firstName": "string ", >>> "lastName": "string", >>> "username": "string", >>> "email": "string", >>> "createdAt": "string", >>> "passwordLastUpdated": "string", >>> "verified": true, >>> "_selfUrl": "string" >>> }, >>> { >>> "firstName": "string ", >>> "lastName": "string", >>> "username": "string", >>> "email": "string", >>> "createdAt": "string", >>> "passwordLastUpdated": "string", >>> "verified": true, >>> "_selfUrl": "string" >>> } >>> ] >>> ] >>> } >>> >>> For this, I created struct type >>> >>> type V1User struct { >>> FirstName string `json:"firstName,omitempty"` >>> LastName string `json:"lastName,omitempty"` >>> UserName string `json:"username,omitempty"` >>> Email string `json:"email,omitempty"` >>> CreatedAt string `json:"createdAt,omitempty"` >>> PasswordLastUpdated string `json:"passwordLastUpdated,omitempty"` >>> Verified bool `json:"verified,omitempty"` >>> SelfUrl string `json:"_selfUrl,omitempty"` >>> } >>> >>> >>> type allUsers struct { >>> users []V1User `json:"users,omitempty"` >>> } >>> >>> I am pretty sure I am missing out on something. I am running below code >>> to fetch and decode the data >>> >>> func (c *Client) getUsers() (users []allUsers, err error) { >>> resp, err := c.request(http.MethodGet, "user", nil) >>> if err != nil { >>> return >>> } >>> defer resp.Body.Close() >>> var result = struct { >>> Users []allUsers >>> }{} >>> err = json.NewDecoder(resp.Body).Decode(&result) >>> return result.Users, err >>> } >>> >>> and I get error >>> >>> fmt.Println(result.Users) -> Users: [{[]}] >>> fmt.Println(err) -> Error: json: cannot unmarshal array into Go >>> struct field .Users of type main.allUsers >>> >>> I am still trying to figure out what's wrong here, any help will be >>> appreciated. >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "golang-nuts" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to golang-nuts...@googlegroups.com <javascript:>. >>> For more options, visit https://groups.google.com/d/optout. >>> >>> >>> -- >>> You received this message because you are subscribed to a topic in the >>> Google Groups "golang-nuts" group. >>> To unsubscribe from this topic, visit >>> https://groups.google.com/d/topic/golang-nuts/QAju97M7JHY/unsubscribe. >>> To unsubscribe from this group and all its topics, send an email to >>> golang-nuts...@googlegroups.com <javascript:>. >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> >> -- >> Mudasir Mirza >> DevOps Manager >> Dubizzle >> >> > > -- > Mudasir Mirza > DevOps Manager > Dubizzle > > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.