在Golang中初始化并插入嵌套的JSON数据?

时间:2019-05-21 17:38:53

标签: json go

我一直在尽力让它在最近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]

我确定我将其变得过于复杂,那么表达这种方式的更有效的方法是什么?

1 个答案:

答案 0 :(得分:2)

使用嵌套地图可能会造成一些混乱,因此也许使用结构将有助于使您的数据结构更易于管理。

考虑使用json-to-go之类的工具来帮助您为JSON数据构造适当的对象。

注意: 这每次都无法提供完美的结构-实际上,当该工具无法识别正确的类型(通常是是不理想的),因此您可能需要自定义输出,但总的来说,它将为您提供一个良好的起点。

playground

中的工作示例