gpt4 book ai didi

json - 在 Go 中解码多个结构中的 json

转载 作者:行者123 更新时间:2023-12-01 22:36:35 24 4
gpt4 key购买 nike

我有一个案例,我必须在多个结构中解析一个长 json。一个例子是:

type AutoGenerated struct {
Instance []Instance `json:"instance"`
}
type Test1 struct {
Envid string `json:"envid"`
Narid string `json:"narid"`
Pod []Pod `json:"pod"`
Regions string `json:"regions"`
Type string `json:"type"`
}
type JavaTest struct {
JavaOutput string `json:"java output"`
JvmVersion string `json:"jvm_version"`
}
type Container struct {
Java []Java `json:"java"`
Name string `json:"name"`
}
type Pod struct {
Container []Container `json:"container"`
Name string `json:"name"`
}

type Instance struct {
Test1 Test1 `json:"test1,omitempty"`
Test2 Test2 `json:"test2,omitempty"`
}

在解码 JSON 时,我不确定应该如何完成。如果我这样做: var test AutoGenerated并使用它来解码,我错过了 JavaTest 中的字段结构如 JvmVersion .有什么方法可以从单个 JSON 中获取不同结构中的填充值?请注意,我有很多这样的不同结构。

示例 json 片段:
{
"instance": [
{
"test1": {
"envid": "test1",
"narid": "",
"pod": [
{
"container": [
{
"java": [
{
"java output": "asdsadasdasdasd",
"jvm_version": "1.8.0_152",
"path": "/abc/aa/11/80/aaaaaa/bbb/aaa",
"publisher": "Java asdsad"
}
],
"name": "test"
}
],
"name": "test-2-6n8xc"
}
],
"regions": "abc",
"type": "xyz"
}
}
]
}

最佳答案

解决方案是修改结构定义。进行了以下更改:

  • 修改AutoGenerated结构:
  • type AutoGenerated struct {
    Instance []map[string]Instance `json:"instance"`
    }
  • 修改Instance结构:
  • type Instance struct {
    Envid string `json:"envid"`
    Narid string `json:"narid"`
    Pod []Pod `json:"pod"`

    }

    请阅读评论中的讨论,以了解进行这些更改的原因。基本上,我想遍历 Instance 的字段。只有通过反射才有可能的结构(一个不太理想的解决方案)。因此,在评论中建议了正确解析此 json 的解决方案,方法是使用实​​例的 map。

    我还完全删除了实例字段的单个结构,例如 Test1 , Test2 , ETC。

    感谢所有帮助我解决这个问题的人。

    关于json - 在 Go 中解码多个结构中的 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61483191/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com