json - 使用 Golang 处理类似 Python 的 json

标签 json go

使用 Python 我可以执行以下操作:

r = requests.get(url_base + url)
jsonObj = json.loads(r.content.decode('raw_unicode_escape'))
print(jsonObj["PartDetails"]["ManufacturerPartNumber"]

有什么方法可以使用 Golang 执行相同的操作吗? 目前我需要以下内容:

json.Unmarshal(body, &part_number_json)
fmt.Println("\r\nPartDetails: ", part_number_json.(map[string]interface{})["PartDetails"].(map[string]interface{})["ManufacturerPartNumber"])

也就是说,我需要对 JSON 的每个字段都使用强制转换,这会使代码变得难以阅读。 我尝试使用 reflection但它也不是很舒服。

编辑: 目前使用以下功能:

func jso(json interface{}, fields ...string) interface{} {
    res := json
    for _, v := range fields {
        res = res.(map[string]interface{})[v]
    }
    return res

然后这样调用它:

fmt.Println("PartDetails: ", jso( part_number_json, "PartDetails", "ManufacturerPartNumber") )

最佳答案

有像gjson这样的第三方包可以帮助您做到这一点。

也就是说,请注意 Go 是 Go,Python 是 Python。 Go 是静态类型的,无论好坏。编写简单的 JSON 操作需要更多代码,但该代码以后应该更容易维护,因为它的类型更严格,并且编译器可以帮助您检查错误。类型也用作文档 - 简单地嵌套字典和数组是完全任意的。

关于json - 使用 Golang 处理类似 Python 的 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54658441/

相关文章:

json - 通过 MongoDB 集合中的 id 搜索数组条目

go - 将字符串传递给golang中的模板

go - 向 Https 站点发送请求

arrays - 当数组长度不为空时转到 “panic: runtime error: index out of range”

javascript - 以 JSON 格式非阻塞写入 Mongo 响应

php - 使用 php 解析来自 google map api v3 的数据

jquery - 使用 jQuery 将 JavaScript 对象转换为 JSON 字符串

c - 如何将复杂的C结构从Go传输到C

MySQL UPDATE 外键约束失败

json - Jackson with JAXB - 抽象类型实例化