我正在尝试解组多维JSON。我的JSON包含动态密钥,因此无法执行。
JSON
{
"id":"3",
"datetime":"2019-06-08",
"metadata":[{"a":"A"},{"b":"B"}]
}
转到文件
type Chats struct {
Id string json:"id"
Datetime string json:"date"
Metadata string json:"metadata"
}
chat := models.Chats{}
err := c.BindJSON(&chat)
if err != nil {
c.Error(err)
return
}
fmt.Println(chat)
答案 0 :(得分:1)
如果元数据是动态的,则将其视为interface{}
。如果您知道它将始终是JSON容器,那么可以方便地进行map[string]interface{}
。如果您不一定要使用类型断言来查看其中的内容,而只是想保留JSON(我想这就是您希望通过将其设置为来做到这一点),那么还有json.RawMessage
字符串)。
type Chats struct {
Id string `json:"id"`
Datetime string `json:"date"`
Metadata interface{} `json:"metadata"`
}
type Chats struct {
Id string `json:"id"`
Datetime string `json:"date"`
Metadata map[string]interface{} `json:"metadata"`
}
type Chats struct {
Id string `json:"id"`
Datetime string `json:"date"`
Metadata json.RawMessage `json:"metadata"`
}