如何解析 Unmarshaled 结构中的引用

我有两个在 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"`)

}


RISEBY
浏览 106回答 1
1回答

斯蒂芬大帝

对于您的示例,这看起来像: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}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go