#arrays #json #go #unmarshalling
#массивы #json #Вперед #демонтаж
Вопрос:
Привет, у меня проблема с демонтажем вложенных массивов JSON. Какую структуру я должен создать? Я хочу избегать использования interface{}
как можно больше, но я действительно не знаю, возможно ли это в этом случае.
Json Я хочу разобрать:
"[[[{"aaa": "aaa"}]]]"
и структуру, которую я хочу использовать, чтобы разобрать это:
type SomeStructNestedNested struct {
Aaa string `json:"aaa"`
}
type SomeStructNested struct {
SomeStructNestedNested []SomeStructNestedNested
}
type SomeStruct struct {
SomeStructNested []SomeStructNested
}
Ссылка на пример:
https://play.golang.org/p/owuMptNrix
Ответ №1:
Да, ответ — это просто фрагмент фрагментов:
type AutoGenerated [][][]struct {
Aaa string `json:"aaa"`
}
Что ж, благодаря вашему вопросу я обнаружил ошибку в этом инструменте, я всегда использую его для манипулирования Json с помощью Go, это может сэкономить вам много скучного времени, также лучше использовать галочки ` для представления строк json, как здесь
Ответ №2:
Проблема здесь в том, что вы пытаетесь использовать структуры для представления вложенности, когда они на самом деле являются массивами. Я нахожу форму самого json довольно плохой, но если вы застряли на этом, тогда у вас должен быть 3d-массив для unmarshal, используя только этот тип структуры ‘nested nested’. Ниже приведена ссылка на ваш игровой пример с некоторыми грубыми изменениями, чтобы продемонстрировать суть.
type SomeStructNestedNested struct {
Aaa string `json:"aaa"`
}
jsonString := "[[[{"aaa": "aaa"}]]]"
d := [][][]SomeStructNestedNested{}
json.Unmarshal([]byte(jsonString), amp;d)
fmt.Printf("%v", d)