golang 是否有一种简单的方法来解码任意复杂的 json

标签 go

我在网上找到的每个示例都显示了为数据构建结构然后将 JSON 解码为数据类型的示例。问题是我得到的是大量的 JSON 转储,使用这种方法似乎是一项艰巨的工作......

有没有办法获取大量数据转储并将其解码为类似于 json/maps 的映射对象?

我现在的情况是这样的...

var data map[interface{}]interface{}
err = json.Unmarshal(JSONDUMP, &data)
if err != nil { log.Fatal(err) }

但是我不能这样调用它

data["some"]["long"]["chain"]["of"]["lookups"] 
(type interface {} does not support indexing)

最佳答案

总的来说,这是一个的想法!但如果你真的需要,你可以这样做:

package main

import (
    "encoding/json"
    "fmt"
)

func main() {
    var anyJson map[string]interface{}

    customJSON := []byte(`{"a": "text comes here", "b": {"c":10, "d": "more text"}}`)

    json.Unmarshal(customJSON, &anyJson)

    fmt.Println("a ==", anyJson["a"].(string))

    b_temp := anyJson["b"].(map[string]interface{})
    fmt.Println("c ==", b_temp["c"].(float64))
}

.. 然后你可以使用任何字段,比如 anyJson["a"].(string) - 看看类型断言,有效是非常重要的

关于golang 是否有一种简单的方法来解码任意复杂的 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42152750/

相关文章:

多个应用服务器上的 MongoDB 连接失败

string - 将基本数据类型值转换为字符串的推荐方法

postgresql - 如何返回未从存储过程中找到的记录

node.js - 以 Node 兼容的方式编码 md5

arrays - golang 数组初始化中的键控项

go - 如何在 Go 中选择 os.Stdin 和 http?

eclipse - Go语言配置

sql - 过滤和排序 SQL 查询以重新创建嵌套结构

xml - golang XML 未正确解码

api - GoLang/Mux 语法问题 : if ID, Ok = mux.Vars(r) ["ID"]; !行