В коде есть две проблемы.
Первая - это то, что @ umar-hayat упомянул выше -> вы демонтируете объект data
, и вы должны стремиться к полю data.M
.
Вторая проблема заключается в том, что структура вашего JSON не соответствует структуре вашей структуры. Ваш Person
имеет одно поле с именем M
. Если мы хотим представить это как JSON, это будет выглядеть так:
{
"M": {
"Name": "Joe",
"Body": "Hi",
"time": 2600
}
}
Вместо этого у вас есть поле с именем person
в вашем JSON, которое не может быть сопоставлено ни с одним полем в вашей структуре , Боюсь, тот факт, что оно похоже на название типа структуры, никак не помогает.
Итак, вы можете изменить JSON и цель:
body := []byte(`{"Name":"Alice","Body":"Hello","Time":1294706395881547000}`)
var data Person
err := json.Unmarshal(body, &data.M)
Или просто ваш JSON:
body := []byte(`{"M":{"Name":"Alice","Body":"Hello","Time":1294706395881547000}}`)
var data Person
err := json.Unmarshal(body, &data)
Но важно, чтобы имена полей в вашем JSON совпадали с именами полей в вашей структуре. Или, как упомянул Konstantinos, вы можете использовать теги для указания конкретных имен, с которыми поля вашей структуры будут представлены в JSON.
. Возможно, вы найдете это полезным: https://gobyexample.com/json