Я пишу обертку API, где вызов API возвращает ответ JSON некоторых данных, позволяет сказать:Golang JSON распаковать несколько вызовов
{
group_id: 123,
group_name: "cool kids",
}
для URL example.com/api/groups
Вы можете затем добавить fields=members
к URL (так что-то вроде: example.com/api/groups?group_id=123&fields=members
), чтобы затем получить:
{
members: [...some data..]
}
Обратите внимание, как другие поля теперь не хватает ...
Ну я пытаюсь использовать один struct
, который будет выглядеть так:
type Club struct {
GroupId int `json:"group_id"`
GroupName string `json:"group_name"`
Members []struct {...} `json:"members"
}
Это то, что выглядеть Структуры:
type Committee struct {
GroupId string `json:"group_id"`
GroupName string `json:"group_name"`
Members []struct {
Person Person `json:"person"`
Rank float64 `json:"rank"`
Side string `json:"side"`
Title string `json:"title"`
} `json:"members"`
}
type Person struct {
id string `json:"id"`
name string `json:"name"`
age int `json:"age"`
}
func getGroup() Club {...}
func (c *Club) GetMembers() {...}
Так что я сделать первый звонок, который unmarshals с использованием getGroup
, поэтому структура имеет GroupId
и GroupName
просто отлично и Members
пуст, потому что вызов ничего не возвращает.
Я затем вызвать club.GetMembers()
для заполнения Members
поля так, что вся структура будет заселена, но это не кажется, извлекая его в структуры, потому что в конце Members
еще пуста, и данные для GroupId
и GroupName
является все еще там.
Я точно знаю, что звонок возвращает то, что я ожидаю, поэтому я считаю, что это Unmarshal
, который не работает, так как бы я пошел по этому поводу? Это не входит в функциональность Unmarshal
?
EDIT Я просто нажал точный код на github, все еще не уверен.
Это репо: https://github.com/PeteJodo/gosun
Это суть используя вышеупомянутую репо: https://gist.github.com/PeteJodo/d5335b9f66304148483b
Основные файлы озабоченность:
Дополнительная информация необходима, чтобы помочь: Пожалуйста, покажите структуру членов, код, который вызывает Unmarshal, и сообщите нам о каких-либо ошибках, возвращаемых с помощью unmarshal. –
какая версия go? – OneOfOne
http://play.golang.org/p/uuO8iGh2Uo <он отлично работает, вы уверены, что используете указатель? – OneOfOne