json - 带有 JSON 和 Golang 的无限结构
问题描述
我不知道如何用 Golang 解组这种 JSON 结构。键是动态的,嵌套的键和值也是动态的..
{"key1":{"col1":"Data11","col2":"Data12","col3":"Data13","col4":"Data14"},
"key2":{"col1":"Data21","col2":"Data22","col3":"Data23","col4":"Data24"},
"key3":{"col1":"Data31","col2":"Data32","col3":"Data33","col4":"Data34"},
"key4":{"col1":"Data41","col2":"Data42","col3":"Data43","col4":"Data44"},
"key5":{"col1":"Data51","col2":"Data52","col3":"Data53","col4":"Data54"},
"key6":{"col1":"Data61","col2":"Data62","col3":"Data63","col4":"Data64"}}
我被困住了。
解决方案
您需要将数据解组为 map[string]map[string]string,如下所示:
jsonData:="{\"key1\":{\"col1\":\"Data11\",\"col2\":\"Data12\",\"col3\":\"Data13\",\"col4\":\"Data14\"}, \"key2\":{\"col1\":\"Data21\",\"col2\":\"Data22\",\"col3\":\"Data23\",\"col4\":\"Data24\"}, \"key3\":{\"col1\":\"Data31\",\"col2\":\"Data32\",\"col3\":\"Data33\",\"col4\":\"Data34\"}, \"key4\":{\"col1\":\"Data41\",\"col2\":\"Data42\",\"col3\":\"Data43\",\"col4\":\"Data44\"}, \"key5\":{\"col1\":\"Data51\",\"col2\":\"Data52\",\"col3\":\"Data53\",\"col4\":\"Data54\"}, \"key6\":{\"col1\":\"Data61\",\"col2\":\"Data62\",\"col3\":\"Data63\",\"col4\":\"Data64\"}}"
var jsonObject map[string]map[string]string
json.Unmarshal([]byte(jsonData),&jsonObject)
for k:=range jsonObject{
fmt.Println(k ," has " , len(jsonObject[k]) , " fields")
for j:=range jsonObject[k]{
fmt.Println(j , "=",jsonObject[k][j] )
}
}
推荐阅读
- javascript - 在视图中如何将 javascript 中的数据发送到控制器
- c - 解析 pcap 数据包
- c# - 如何连接到 LibreOfficeBase 数据库?
- intellij-idea - vim 块突出显示在 intellij 中无法正常工作
- jquery - Kendo AutoComplete 以编程方式设置选定对象
- javascript - 使用 map 函数从包含数组的 Object 中创建一个数组
- testing - 在 groovy (Spock) 中测试文件结构
- javascript - 通过JS删除Required修饰符后触发的OnInvalid html事件
- reactjs - Material UI (React):如何设置包装 Select 的 Input 样式?
- netty - 使用 netty 的 SslHandler::close(ChannelHandlerContext, ChannelPromise)