gpt4 book ai didi

json - 如何解析 Unmarshaled 结构中的引用

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

我有两个在 Go 中解码的 json 文件。

第一个包含某种类型的对象,该对象由第二组中的 ID 引用。

// Foo
{
"id": 5,
"key": "value"
}

// Bar
{
"name": "bar",
"fooReferenceId": 5
}

我想以 struct 结束

type Bar struct {
Name string
Foo *Foo
}

有没有一种方法可以直接实现这一点,类似于我们提供 json:"..." key 解析器的方式?

有点像

type Bar struct {
Name string `json:"name"`
Foo *Foo resolveFooById(`json:"fooReferenceId"`)
}

最佳答案

您需要像本文底部的示例一样使用自定义解码器:

http://choly.ca/post/go-json-marshalling/

对于您的示例,这看起来像:

func (b *Bar) UnmarshalJSON(input []byte) error {
type Alias Bar
aux := &struct {
FooReferenceID int `json:"fooReferenceId"`
*Alias
}{
Alias: (*Alias)(b),
}
if err := json.Unmarshal(input, &aux); err != nil {
return err
}
for index, foo := range foos {
if foo.ID == aux.FooReferenceID {
b.Foo = &foos[index]
break
}
}
return nil
}

这里是完整的可执行示例:

https://play.golang.org/p/SCpsVCgnSSK

关于json - 如何解析 Unmarshaled 结构中的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53283917/

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