Как разобрать вложенную структуру JSON - PullRequest
0 голосов
/ 03 ноября 2019

Я изучаю кодирование и декодирование JSON, но я застрял на немаршалинге вложенных структур.

Я попытался объявить дочернюю структуру как внешний тип и явную структуру в родительском элементе следующим образом:

type WorkingSession struct {
    Project Project `json:"project"`
    Hours int    `json:"hours"`
    Date  string `json:"date"`
    Nested struct{
        NestedField string `json:"nested_field"`
    } `json:"nested"`
}

type Project struct {
    Name string `json:"name"`
}

Но когда я выполняю свой основной:

func main() {
    document:= []byte(`
        {
            "project " : {"name" : "Project 1"},
            "hours" : 4,
            "date" : "2019-11-03",
            "nested" : {"nested_field" : "test"}
        }
    `)

    var ws WorkingSession

    err := json.Unmarshal(document, &ws)

    log.Println(ws)
    if err != nil {
        log.Fatal(err.Error())
    }

}

Он не печатает вложенные поля project:

2019/11/03 11:24:04 {{} 4 2019-11-03 {test}}

Что не так?

1 Ответ

1 голос
/ 03 ноября 2019

У вас есть еще одна опечатка в вашей клавише project.

У вас есть пробел в "project ". Уберите пробел, и он будет работать нормально.

document:= []byte(`
    {
        "project" : {"name" : "Project 1"},
        "hours" : 4,
        "date" : "2019-11-03",
        "nested" : {"nested_field" : "test"}
    }
`)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...