2014-01-13 4 views
1

У меня есть следующий ответ от графа апиНевозможно декодировать ответ JSON

{ 
    "data": [ 
     { 
     "name": "Mohamed Galib", 
     "id": "502008940" 
     }, 
     { 
     "name": "Mebin Joseph", 
     "id": "503453614" 
     }, 
     { 
     "name": "Rohith Raveendranath", 
     "id": "507482441" 
     } 
    ], 
    "paging": { 
     "next": "https://some_url" 
    } 
} 

У меня на структуру следующим образом

type Item struct { 
    Name, Id string 
} 

Я хотел разобрать ответ и получить массив пункта , Как это сделать?

ответ

5

Вам необходимо обновить-структуру следующим образом:

type Item struct { 
    Name string `json:"name"` 
    Id string `json:"id"` 
} 

и добавить-структуру для представления обертки:

type Data struct { 
    Data []Item `json:"data"` 
} 

Вы можете использовать json.Unmarshal для заполнения экземпляра данных.

См. example в документах.

+1

Другой вариант заключается в том, чтобы имена JSON и Go совпадали с символом для символа, но видя, что вы не контролируете имена JSON в этом случае, и вы не можете сделать имена Go в нижнем регистре или JSON API не сможет использовать отражение для доступа к ним, это не вариант в этом случае. – joshlf

+0

@dommage, Это работает спасибо, Не можем ли мы это сделать, не добавляя дополнительные данные структуры? Для каждого ответа мне придется добавить такую ​​структуру. – Deepak

+0

Боюсь, что так. Кажется, что Idiomatic Go включает множество небольших определений типов. Вы привыкнете к этому :) –

Смежные вопросы