如何确保首先解析根结构的文件,然后解析嵌入式结构的字段

时间:2019-04-10 00:39:23

标签: go struct

我的结构如下:-

type Inner struct {
    FooInner string `json:"fooInner"`
    BarInner string `json:"barInner,omitempty"`
}

type Root struct {
    Inner
    Foo string `json:"foo"`
    Bar string `json:"bar"`
}

我希望先解析“ Root”结构的字段,然后再解析“ Inner”结构的字段。但是,这里首先解析了Inner struct的字段。

1 个答案:

答案 0 :(得分:3)

如果您要询问JSON封送(未解析)并且希望按特定顺序封送字段,则封送处理程序通常会按其索引顺序封送字段并在此过程中递归所有嵌入的结构。结构域索引(如reflect使用的json.Marhsal包所见)是由它们在代码中的出现顺序定义的。

因此,请先放置所需字段,然后再放置任何嵌入式结构:

type Root struct {
    Foo string `json:"foo"`
    Bar string `json:"bar"`
    Inner // <- move this last
}

游乐场Example

b, _ := json.Marshal(Root{})

{"foo":"","bar":"","fooInner":""}