在Golang中将复杂的JSON结构初始化为映射
我需要提供一个在Golang中将复杂的JSON结构初始化为映射,json,go,Json,Go,我需要提供一个将[string]接口{}映射到函数。背后的JSON是: { "update": { "comment": [ { "add": { "body": "this is a body" } } ] } } 我完全卡住了。我尝试了嵌套结构,映射,两者的混合,我就是看不到这个简单问题的解决方案 我最后一次尝试是: //准备数据 var d
将[string]接口{}
映射到函数。背后的JSON是:
{
"update": {
"comment": [
{
"add": {
"body": "this is a body"
}
}
]
}
}
我完全卡住了。我尝试了嵌套结构,映射,两者的混合,我就是看不到这个简单问题的解决方案
我最后一次尝试是:
//准备数据
var data=make(映射[字符串]接口{})
var comments[]映射[string]映射[string]字符串
var comment=make(映射[string]映射[string]字符串)
注释[“添加”]=映射[字符串]字符串{
“正文”:“测试”,
}
注释=附加(注释,注释)
数据[“更新”][“注释”]=注释
我成功地做到了这一点,我觉得这很难看
//准备数据
var data=make(映射[字符串]接口{})
var comments[]映射[string]映射[string]字符串
var comment=make(映射[string]映射[string]字符串)
注释[“添加”]=映射[字符串]字符串{
“正文”:“测试”,
}
注释=附加(注释,注释)
var update=make(映射[字符串]接口{})
更新[“注释”]=注释
数据[“更新”]=更新
我成功地做到了这一点,我觉得这很难看
//准备数据
var data=make(映射[字符串]接口{})
var comments[]映射[string]映射[string]字符串
var comment=make(映射[string]映射[string]字符串)
注释[“添加”]=映射[字符串]字符串{
“正文”:“测试”,
}
注释=附加(注释,注释)
var update=make(映射[字符串]接口{})
更新[“注释”]=注释
数据[“更新”]=更新
人们通常使用接口{}
和解组()
来实现这一点
看看一些例子
希望这有帮助!:) 通常人们使用
接口{}
和解组()
来实现这一点
看看一些例子
希望这有帮助!:) 您可以使用以下格式创建并初始化json对象
import (
"fmt",
"encoding/json"
)
type Object struct {
Update Update `json:"update"`
}
type Update struct {
Comments []Comment `json:"comments"`
}
type Comment struct {
Add Add `json:"add"`
}
type Add struct {
Body Body `json:"body"`
}
type Body string
func main() {
obj := make(map[string]Object)
obj["buzz"] = Object{
Update: Update{
Comments: []Comment{
Comment{
Add: Add{
Body: "foo",
},
},
},
},
}
fmt.Printf("%+v\n", obj)
obj2B, _ := json.Marshal(obj["buzz"])
fmt.Println(string(obj2B))
}
初始化对象obj将是
map[buzz:{Update:{Comments:[{Add:{Body:foo}}]}}]
请尝试使用此代码
. 有关更多详细信息,请参阅此您可以使用以下格式创建并初始化json对象
import (
"fmt",
"encoding/json"
)
type Object struct {
Update Update `json:"update"`
}
type Update struct {
Comments []Comment `json:"comments"`
}
type Comment struct {
Add Add `json:"add"`
}
type Add struct {
Body Body `json:"body"`
}
type Body string
func main() {
obj := make(map[string]Object)
obj["buzz"] = Object{
Update: Update{
Comments: []Comment{
Comment{
Add: Add{
Body: "foo",
},
},
},
},
}
fmt.Printf("%+v\n", obj)
obj2B, _ := json.Marshal(obj["buzz"])
fmt.Println(string(obj2B))
}
初始化对象obj将是
map[buzz:{Update:{Comments:[{Add:{Body:foo}}]}}]
请尝试使用此代码
. 有关更多详细信息,请参阅此谢谢,看到了一些有趣的东西!谢谢,看到了一些有趣的东西!您可以创建类型为
map[string]Object
的新映射,并将初始化的obj
var分配给它。您可以创建类型为map[string]Object
的新映射,并将初始化的obj
var分配给它。