Python喜欢使用Golang处理json

zed5wv10  于 2023-04-22  发布在  Python
关注(0)|答案(2)|浏览(131)

使用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的每个字段使用强制转换,这会使代码变得不可读。

EDIT:当前使用如下函数:

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") )
lb3vh1jj

lb3vh1jj1#

有像gjson这样的第三方软件包可以帮助你做到这一点。
也就是说,请注意Go是Go,Python是Python。Go是静态类型的,无论好坏。编写简单的JSON操作需要更多的代码,但这些代码应该更容易维护,因为它是更严格的类型,编译器可以帮助您检查错误。类型也可以作为文档-简单地嵌套dicts和数组是完全任意的。

m2xkgtsf

m2xkgtsf2#

我发现下面的资源对从json创建结构体非常有帮助。解组应该只匹配你在结构体中定义的字段,所以拿走你需要的,如果你喜欢,剩下的就留下。
https://mholt.github.io/json-to-go/

相关问题