Разбор json динамического массива - PullRequest
0 голосов
/ 08 марта 2019

Я пытаюсь разобрать json, чтобы понять, что он поражен, но кое-что, как объект возвращается пустым:

Json Object:

`{
    "names": [
        {
            "David": {
                "id": "100",
                "country": "usa",
                "group": [
                    "A1",
                    "A2"
                ]
            }
        },
        {
            "John": {
                "id": "1",
                "country": "uk",
                "group": [
                    "A1",
                    "A2"
                ]
            }
        }
    ]
}`

Структура GoLang:

type Data struct {
    Names []Names `json:"names"`
}

type Names struct {
    ID      string   `json:"id"`
    Country string   `json:"country"`
    Group   []string `json:"group"`
}

Проблема в том, что массив содержит 2 элемента David, John почему-то возвращает пустой объект, так как у синтаксического анализатора есть проблема с извлечением строк David, John

Ответы [ 2 ]

2 голосов
/ 08 марта 2019

Поле struct Data's Names неверно.Это кусочек map[string]Names, а точнее []Names.Так что просто измените его на:

Names []map[string]Names `json:"names"`

Проверьте полный исполняемый код на https://play.golang.org/p/IDU0jANRbBn.

0 голосов
/ 08 марта 2019

Здесь у вас есть другая идея:

Разбор в карту

type Dictionary map[string]json.RawMessage

// Generate a Diccionary from JSON body
func Generate(body io.Reader) (Dictionary, error) {
    decoder := json.NewDecoder(body)
    err := decoder.Decode(&d)
    return d, err
}

Использование:

d, err = Generate(strings.NewReader(string(jsonHere)))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...