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.

Reply via email to