是否可以用未知字段散集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) // gives {map[]}
}
如果您不知道键,只需使用 map,映射的值类型可能是描述结构的结构:
type mData struct {
KnownField1 [][5]int `json:"known_field_1"`
KnownField2 [][5]int `json:"known_field_2"`
KnownField3 [][5]int `json:"known_field_3"`
}
请注意,您必须导出字段才能工作!
解组代码:
var data map[string]mData
if err := json.Unmarshal(body, &data); err != nil {
panic(err)
}
fmt.Println(data)
for k, v := range data {
fmt.Println(k, v)
}
输出(在Go Playground上尝试):
map[unknown_field:{[[1 2 3 4 5] [10 20 30 40 50] [100 200 300 400 500]] [[11 21 31 41 51]] [[12 22 32 42 52] [14 44 34 44 54]]}]
unknown_field {[[1 2 3 4 5] [10 20 30 40 50] [100 200 300 400 500]] [[11 21 31 41 51]] [[12 22 32 42 52] [14 44 34 44 54]]}
查看相关问题:
如何在Golang中解析/反序列化动态JSON
带未知字段的反编组JSON
将json字符串解组到具有结构本身一个元素的结构
JSON嵌套动态结构去解码
问题内容: 是否可以解组未知字段的JSON?该字段名称始终是不同的,但是结构是相同的。JSON是POST请求的结果。 我的代码: 问题答案: 如果您不知道键,只需使用一个映射,并且映射的值类型可能是描述该结构的结构: 请注意,您必须导出字段才能使用此功能! 和解编代码: 输出(在Go Playground 上尝试):
我有以下 JSON 我知道它有“a”和“b”字段,但我不知道其他字段的名称。所以我想以以下类型散集它: 我该怎么做?
问题内容: 我在这里分叉了一个很棒的项目,并且刚刚学习了一些东西,就把它弄乱了。我不知道的问题是有关自定义编组的一些问题,如果您在这里看到,您可以看到它解组了包含一个字段的结构,然后使用该字段将其解组。除了嵌套的情况,这一切都很好。因此,最好的例子是: 只需说您有一个善意的结构是a ,那么就可以将其编组。然后具有3个保留在字段中的类型。这些孩子最终成为我的问题类型。我如何才能解决嵌套数据的问题?这
问题内容: 我有与此类似的JSON: 我创建了一些类来映射这个json 而Model1类是仅包含String字段的简单类。 但这是行不通的。 编辑:JSON格式如下所示: 问题答案: Gson 2.0+的解决方案 我刚刚了解到,使用更新的Gson版本,这非常简单: 创建的对象是一个Map(com.google.gson.internal.LinkedTreeMap),如果你打印它,它看起来像这样:
问题内容: 当JSON不是“期望”格式时,我发现GOLANG中的编组和拆组非常混乱。例如,在JSON配置文件(我正尝试与Viper一起使用)中,我有一个配置文件,看起来像: 其中“事物”可能是另一个对象中的一个对象n向下移动,我有一个struct: 我该如何解组JSON,更具体地说是解编viper配置(使用viper.Get(“ things”))来获得类似数组: 我尤其不确定如何将密钥作为结构字
问题内容: 我已经开始在golang中工作,我正在尝试解析JSON字符串以构建结构,但无法正常工作。 JSON字符串: 每日”:[{“ userAccessToken”:“ acessToken”,“ uploadStartTimeInSeconds”:1499744832,“ uploadEndTimeInSeconds”:1499744832,“ callbackURL”:“ callback