Как разобрать JSON на Голанге - PullRequest
0 голосов
/ 06 октября 2019

У меня возникли проблемы с удаленным доступом к значениям строки JSON в моем сервисе golang.

Я прочитал документацию по golang, но все объекты JSON в примерах отформатированы по-разному.

измой API, я получаю следующую строку JSON:

{"NewDepartment":
    {
    "newDepName":"Testabt",
    "newDepCompany":2,
    "newDepMail":"Bla@bla.org"
    }
}

на ходу я определил следующие типы данных:

type NewDepartment struct {
    NewDepName string `json:"newDepName"`
    NewDepCompany   int `json:"newDepCompany"`
    NewDepMail string `json:"newDepMail"`
}

type NewDeps struct {
    NewDeps   []NewDepartment `json:"NewDepartment"`
}

Я пытаюсь разархивировать JSON (из тела запроса) и получить доступ кзначений, но я не могу получить никаких результатов

var data types.NewDepartment
    errDec := json.Unmarshal(reqBody, &data)

fmt.Println("AddDepartment JSON string got: " + data.NewDepName)

, но он не содержит строки - ничего не отображается, но нет ошибок при unmarshaling или Println.

Спасибо за помощь.

1 Ответ

2 голосов
/ 06 октября 2019

Вы почти у цели.

Первое обновление - сделать NewDeps.NewDeps отдельным объектом, а не массивом (согласно предоставленному JSON).

Второе обновление - десериализацияJSON в NewDeps, а не в NewDepartment.

Рабочий код:

type NewDepartment struct {
    NewDepName string      `json:"newDepName"`
    NewDepCompany int      `json:"newDepCompany"`
    NewDepMail string      `json:"newDepMail"`
}

type NewDeps struct {
    NewDeps NewDepartment  `json:"NewDepartment"`
}

func main() {
    var data NewDeps
    json.Unmarshal([]byte(body), &data)

    fmt.Println("AddDepartment JSON string got: " + data.NewDeps.NewDepName)
}

https://play.golang.org/p/Sn02hwETRv1

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