我有两个在 Go 中解组的 json 文件。第一个包含某种类型的对象,该对象由第二组中的 ID 引用。// Foo{ "id": 5, "key": "value"}和// Bar{ "name": "bar", "fooReferenceId": 5}struct我想以一个喜欢结束type Bar struct { Name string Foo *Foo}有没有一种方法可以直接实现这一点,类似于我们提供json:"..."密钥解析器的方式?就像是type Bar struct { Name string `json:"name"` Foo *Foo resolveFooById(`json:"fooReferenceId"`)}
1 回答
斯蒂芬大帝
TA贡献1827条经验 获得超8个赞
对于您的示例,这看起来像:
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
}
- 1 回答
- 0 关注
- 105 浏览
添加回答
举报
0/150
提交
取消