我一直在尽力让它在最近3个小时内发挥作用,因此希望你们能够为我提供帮助。
我正在尝试在Go中初始化嵌套的JSON结构并将数据插入其中。这是我要处理的JSON的结构:
{
"top": {
"item1": {
"foo": "bar"
},
"item2": "This is item2",
"item3": "This is item3",
"item4": {
"foo2": "bar2"
}
}
}
这就是我在Go中进行设置的方式-
package main
import (
"fmt"
)
func main() {
data := make(map[string]map[string]map[string]string) // init top level map
data["top"] = make(map[string]map[string]string)
data["top"]["item1"] = make(map[string]string)
data["top"]["item4"] = make(map[string]string)
data["top"]["item1"]["foo"] = "bar"
data["top"]["item4"]["foo2"] = "bar2"
data["top"]["item2"] = "This is item2"
fmt.Println(data)
}
但是,如果运行此命令,则会出现此错误:
不能在分配中将“ This is item2”(类型字符串)用作地图类型[string]
我确定我将其变得过于复杂,那么表达这种方式的更有效的方法是什么?
答案 0 :(得分:2)
使用嵌套地图可能会造成一些混乱,因此也许使用结构将有助于使您的数据结构更易于管理。
考虑使用json-to-go之类的工具来帮助您为JSON数据构造适当的对象。
注意: 这每次都无法提供完美的结构-实际上,当该工具无法识别正确的类型(通常是是不理想的),因此您可能需要自定义输出,但总的来说,它将为您提供一个良好的起点。
中的工作示例