gpt4 book ai didi

json - 嵌套 JSON 中的相同结构

转载 作者:数据小太阳 更新时间:2023-10-29 03:03:23 31 4
gpt4 key购买 nike

我在 golang 中解析 JSON 时遇到问题,我从 API 收到 JSON 格式的响应,该格式在多个级别嵌套相同形式的 JSON。

API 响应如下

{
"podKategoria": {
"podKategoriaTyp": "area",
"nazwaWyswietlana": "Area",
"podKategorie": [
{
"podKategoriaTyp": "somethingelse",
"nazwaWyswietlana": "Display something else",
"podKategoria": {
"podKategoriaTyp": "and other thing",
"nazwaWyswietlana": "Display and other thing",
"podKategorie": [
{
"podKategoriaTyp": "sub nd other thing",
"nazwaWyswietlana": "display nd other thing"
},
{
"podKategoriaTyp": "sub 2 nd other thing",
"nazwaWyswietlana": "display sub 2 nd other thing"
},
{
"podKategoriaTyp": "sub 3 nd other thing",
"nazwaWyswietlana": "display sub 3 nd other thing"
}
]
}
},
{
"podKategoriaTyp": "another one",
"nazwaWyswietlana": "display another one",
"podKategoria": {
"podKategoriaTyp": "and and another one ",
"nazwaWyswietlana": "display it another one",
"podKategorie": [
{
"podKategoriaTyp": "sub 1 another one",
"nazwaWyswietlana": "display sub 1"
},
{
"podKategoriaTyp": "sub 2 another one",
"nazwaWyswietlana": "display sub 2"
},
]
}
},
]
}
}

在此之后我使用了 https://mholt.github.io/json-to-go/尝试为我创建结构。最合适的方法似乎是创建像

这样的基础结构
type Struktury struct {
PodKategorie PodKategoria `json:"podKategoria"`
}


type PodKategoria struct {
PodKategoriaTyp string `json:"podKategoriaTyp"`
NazwaWyswietlana string `json:"nazwaWyswietlana"`
PodKategorie []struct {
SubCategoryType string `json:"podKategoriaTyp"`
DisplayName string `json:"nazwaWyswietlana"`
} `json:"podKategorie, omitempty"`
}

但正如您所看到的,JSON 结构有点棘手,我一直在努力寻找正确解码此 JSON 字符串的最佳方法:/

仅使用默认值的初始尝试允许我获取项目的根(在 Playground https://play.golang.org/p/uQMnMGEtXD- 中测试)因此这让我想到自定义解码接口(interface)实现可能是这里的方法?任何有关如何解决此问题的指示将不胜感激

最佳答案

这是一个有效的解决方案,检查 playground

type Categories []*Category
type Category struct {
Type string `json:"podKategoriaTyp"`
Display string `json:"nazwaWyswietlana"`
Categories Categories `json:"podKategorie"`
SubCategory *Category `json:"podKategoria"`
}

func main() {

cat := &Category{}
err := json.Unmarshal([]byte(JSON), &cat)
if err != nil {
log.Fatal(err)
}
buf, err := json.Marshal(cat)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", buf)
}

关于json - 嵌套 JSON 中的相同结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49595947/

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