场景:
考虑以下是JSON:
{
"Bangalore_City": "35_Temperature",
"NewYork_City": "31_Temperature",
"Copenhagen_City": "29_Temperature"
}
如果您注意到,数据的结构是没有硬编码的键提及 City
/Temperature
它基本上只是值。
问题:我无法解析任何动态的 JSON。
问题:谁能找到这种 JSON 解析的解决方案?我试过go-simplejson , gabs & 默认 encoding/json
但没有运气。
注意: 上面的 JSON 仅作为示例。并且有很多应用程序正在使用当前的 API,所以我不想改变数据的结构。我的意思是我不能改变如下:
[{
"City_Name":"Bangalore",
"Temperature": "35"
},...]
然后我可以定义struct
type TempData struct {
City_Name string
Temperature string
}
最佳答案
您可以解码为 map[string]string
例如:
m := map[string]string{}
err := json.Unmarshal([]byte(input), &m)
if err != nil {
panic(err)
}
fmt.Println(m)
输出(包装):
map[Bangalore_City:35_Temperature NewYork_City:31_Temperature
Copenhagen_City:29_Temperature]
在 Go Playground 上试用.
这样,无论键或值是什么,您都将在 map
中拥有所有对,您可以打印或循环这些对。
还请注意,虽然您的示例仅包含 string
值,但如果值类型不同(例如 string
、数字等),您可以使用 interface{}
用于值类型,在这种情况下,您的 map 将是 map[string]interface{}
类型。
另外请注意,我创建了一个库来轻松处理此类动态对象,这在这些情况下可能会有很大帮助:github.com/icza/dyno
.
https://stackoverflow.com/questions/29347092/
相关文章:
java - 如何防止 Gson 将长数字(一个 json 字符串)转换为科学记数法格式?
json - LibreOffice Calc 是否支持 JSON 文件导入/排序?
c# - 如何在 WebAPI 后端 C# 上接收 JSON 数据?
javascript - jQuery、AJAX、JSONP : how to actually s
javascript - Sequelize - 如何仅返回数据库结果的 JSON 对象?
javascript - 如何将输入文件对象序列化为 JSON?