Пустые поля при выполнении JSON Unmarshal на Голанге - PullRequest
0 голосов
/ 16 мая 2018

Я написал этот кусок кода.Я не могу понять, почему он дает пустые поля при запуске.Я пробовал прописные переменные.Все еще не работает.

package main

import (
        "encoding/json"
        "fmt"
)

type FirstName struct {
        Name1 string
}
type SecondName struct {
        Name2 string
}
type Person struct {
        Details     FirstName
        MoreDetails SecondName
}

func main() {
        var someGuy Person
        var data = []byte(`{"details": {"firstName": "alan"}, "moreDetails": {"surName": "Turing"}}`)
        json.Unmarshal(data, &someGuy)
        fmt.Println(someGuy)
}

1 Ответ

0 голосов
/ 16 мая 2018

Ваше отображение JSON to Go неверно.Чтобы иметь автоматическое соответствие между полями структуры и свойствами JSON во время процесса демаршалинга, поле names (а не имя их типов) должно соответствовать свойствам в JSON (с учетом регистра):

type FirstName struct {
    FirstName string
}
type SecondName struct {
    SurName string
}
type Person struct {
    Details     FirstName
    MoreDetails SecondName
}

При этом вывод (попробуйте на Go Playground ):

{{alan} {Turing}}

Если вы хотите сохранить эти имена в Go, другойможно указать отображение между полями структуры Go и именами свойств JSON.Для этого вы можете использовать struct tags :

type FirstName struct {
    Name1 string `json:"firstName"`
}
type SecondName struct {
    Name2 string `json:"surName"`
}

Вывод будет таким же.Попробуйте это на Go Playground .

Для ознакомления и получения дополнительной информации о тегах структуры см. Как использовать теги в Go?

...