【发布时间】:2019-02-12 20:45:01
【问题描述】:
使用 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") )
【问题讨论】: