gpt4 book ai didi

json - 来自 json 的嵌套结构,解析为结构

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

我有一个来自获取 json.Unmarshal() 的 api 查询的数据集成一个结构。一旦完成数据。然后需要使用不同的键名导出它。

到目前为止我有这个。虽然它有效,但我只是想看看是否有更好的方法。

用于解析传入api的struct

type Bars struct {
Link string `json:"bar_link"`
Name string `json:"name"`
}

type Foos struct {
Foo string `json:"foo"`
Bar []Bars `json:"bars"`
}

type Opts struct {
Something string `json:"something"`
}

type Test struct {
ID string `json:"id"`
Name string `json:"name_from_api"`
StringDesc []string `json:"name_from_api_one"`
NumberField int `json:"name_from_api_two"`
Foo []Foos `json:"foos"`
Opts Opts `json:"option_stuff"`
}

使用上述结构解析传入数据。
var test Test

json.Unmarshal(data, &test)

return test

使用另一个结构更改输出,包括更改一些键:
type Bars struct {
Link string `json:"different_name_of_link_key"`
Name string `json:"name"`
}

type Foos struct {
Foo string `json:"different_foo_name"`
Bar []Bars `json:"bars"`
}

type Opts struct {
Something string `json:"something"`
}

type Test struct {
ID string `json:"id"`
Name string `json:"different_name"`
StringDesc []string `json:"different_name_two"`
NumberField int `json:"different_name_three"`
Foo []Foos `json:"foos"`
Opts Opts `json:"option_stuff"`
}

// test is "test" returned in the above unmarshal

var foos []Foos
for _, i := range test.Foo {
var f []Bars
for _, b := range i.Bar {
f = append(f, Bars(b))
}
foos = append(foos, Foos{
Foo: i.Foo,
Bar: f,
})
}

return {
ID: test.ID,
Name: test.Name,
StringDesc: test.StringDesc,
NumberField: test.NumberField,
Foo: foos,
Opts: Opts(test.Opts),
}

这是最近的游乐场: https://play.golang.org/p/yoHfzmHfxKp

更新:使用了酒吧的转换类型。

最佳答案

如果你没有改变数据,你可以做一个字符串,或者如果你希望一个正则表达式替换你得到的初始字符串。如果您正在更改数据,请编码并执行字符串/正则表达式替换,这样您就不必维护一些额外的结构。但是,我不知道性能是否受到影响。

关于json - 来自 json 的嵌套结构,解析为结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60173210/

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