我有以下JSON
{"a":1, "b":2, "?":1, "??":1}
Run Code Online (Sandbox Code Playgroud)
我知道它有"a"和"b"字段,但我不知道其他字段的名称.所以我想以下列类型解组它:
type Foo struct {
// Known fields
A int `json:"a"`
B int `json:"b"`
// Unknown fields
X map[string]interface{} `json:???` // Rest of the fields should go here.
}
Run Code Online (Sandbox Code Playgroud)
我怎么做?
场景:
考虑以下是JSON:
{
"Bangalore_City": "35_Temperature",
"NewYork_City": "31_Temperature",
"Copenhagen_City": "29_Temperature"
}
Run Code Online (Sandbox Code Playgroud)
如果您注意到,数据的结构使得没有硬编码的密钥提及City/ Temperature它基本上只是值.
问题:我无法解析任何动态的JSON.
问题:有没有人能找到这种JSON解析的解决方案?我试过go-simplejson,gabs和默认encoding/json但没有运气.
注意: 上面的JSON仅用于示例.并且有很多应用程序正在使用当前的API,所以我不想改变数据的结构.我的意思是我不能改变如下:
[{
"City_Name":"Bangalore",
"Temperature": "35"
},...]
Run Code Online (Sandbox Code Playgroud)
然后我可以定义 struct
type TempData struct {
City_Name string
Temperature string
}
Run Code Online (Sandbox Code Playgroud) 是否可以用未知字段解组 JSON?该字段名称始终不同,但结构是相同的。JSON 是 POST 请求的结果。
我的代码:
package main
import "fmt"
import "encoding/json"
var body = []byte(`{
"unknown_field": {
"known_field_1": [[1,2,3,4,5],[10,20,30,40,50],[100,200,300,400,500]],
"known_field_2": [[11,21,31,41,51]],
"known_field_3": [[12,22,32,42,52],[14,44,34,44,54]]
}
}`)
type MyStruct struct {
MainData map[string]mData `json:"-"`
}
type mData struct {
knownField1 [][5]int `json:"known_field_1"`
knownField2 [][5]int `json:"known_field_2"`
knownField3 [][5]int `json:"known_field_3"`
}
func NewMyStruct() MyStruct {
ms := MyStruct{}
ms.MainData = make(map[string]mData)
return ms
}
func main() {
myStruct := NewMyStruct()
if err := json.Unmarshal(body, &myStruct); err != nil {
panic(err)
}
fmt.Println(myStruct) // …Run Code Online (Sandbox Code Playgroud) 我是初学者并试图解组以下json字符串
[{
"db": {
"url": "mongodb://localhost",
"port": "27000",
"uname": "",
"pass": "",
"authdb": "",
"replicas": [
{
"rs01": {
"url":"mongodb://localhost",
"port": "27001",
"uname": "",
"pass": "",
"authdb": ""
}
},
{
"rs02": {
"url":"mongodb://localhost",
"port": "27002",
"uname": "",
"pass": "",
"authdb": ""
}
}
]
}
}]
Run Code Online (Sandbox Code Playgroud)
这是结构
type DBS struct {
URL string `json:url`
Port string `json:port`
Uname string `json:uname`
Pass string `json:pass`
Authdb string `json:authdb`
Replicas []DBS `json:replicas`
}
Run Code Online (Sandbox Code Playgroud)
这是功能
func loadConfigs() []DBS {
var config []DBS
raw, …Run Code Online (Sandbox Code Playgroud)