Я столкнулся с некоторой проблемой с демаршированием строки обратно в struct object, когда у объекта есть вложенный массив объектов struct.Я использую следующий код для демонстрации своей проблемы:
Строка json:
const myStr = `{
"name": "test_session1",
"shared_items:": [
{
"id": 0,
"name": ".aspnet"
},
{
"id": 1,
"name": ".bash_profile"
}
]
}`
У меня есть две структуры, следующие как Session , являющийся родителем, и SharedItem являющийся ассоциированным дочерним элементом (ren):
type Session struct {
ID uint64 `json:"id"`
Name string `json:"name,omitempty"`
SharedItems []SharedItem `json:"shared_items"`
}
type SharedItem struct {
ID uint64 `json:"id"`
Name string `json:"name"`
}
Я попытался выполнить следующее, чтобы демонтировать строку json, но похоже, что вложенный массив объектов SharedItem отсутствует, как я увидел sess объект имеет 0 общих элементов, что не соответствует ожиданиям.
func main() {
var sess Session
if err := json.Unmarshal([]byte(myStr), &sess); err != nil {
panic(err)
}
fmt.Printf("sess name is: %s, and has %d shared items\n", sess.Name, len(sess.SharedItems)) // printed: sess name is test_session1, and has 0 shared items
}
Вот ссылка на мою игровую площадку: https://play.golang.org/p/a-y5T3tut6g