Как распаковать json, чтобы структурировать с помощью uint8 - PullRequest
0 голосов
/ 29 января 2020

Как вы демаршируете json в структуру, которая содержит uint8? Я получаю сообщение об ошибке json: cannot unmarshal object into Go struct field A.test of type uint8

В моей структуре у меня есть

type A struct {
    Test  uint8  `json:"test omitempty" bson:"test"`
}

Я вставил структуру A в mon go, а затем успешно выполнил поиск mon go и распечатать коллекцию, структура которой соответствует. Я могу сделать bson.MarshalExt JSON, чтобы преобразовать bson в json, а затем, когда я сделаю json .Unmarshal, чтобы преобразовать json в структуру A, где я терплю неудачу.

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

https://play.golang.org/p/0HOAxsu166j

Я вижу, что unmarshal использует "float64, для JSON числа", но я не могу получить float64 вместо uint8 для работы либо

1 Ответ

0 голосов
/ 29 января 2020

Благодаря комментарию @Brits я обнаружил, что когда я позвонил bson.MarshalExt JSON, я получил расширение Json. json .Unmarshal () не может читать расширенный Json, как {"$numberInt":"52"}, поэтому он не работает.

, поэтому для его решения я использую bson.UnmarshalExtJSON() вместо json.Unmarshal(), чтобы иметь возможность демонтировать расширенный JSON в структуру

...