Golang-覆盖嵌入字段的JSON标记
假设我有以下类型:Golang-覆盖嵌入字段的JSON标记,json,go,struct,Json,Go,Struct,假设我有以下类型: type Inner struct { Field1 string `json:"field1"` Field2 string `json:"field2"` } type Outer struct { Inner Field2 string `json:"-"` } 我试图用它来实现的是允许拥有一个类型(Outer),该类型包含嵌入类型(internal)中的所有字段,但会覆盖其中一个不在JSON中封送的字段。这不起作用,调用json.
type Inner struct {
Field1 string `json:"field1"`
Field2 string `json:"field2"`
}
type Outer struct {
Inner
Field2 string `json:"-"`
}
我试图用它来实现的是允许拥有一个类型(Outer
),该类型包含嵌入类型(internal
)中的所有字段,但会覆盖其中一个不在JSON中封送的字段。这不起作用,调用json.Marshal(外部{})
返回:
{"field1":"","field2":""}
是否有任何方法可以在Go中执行此操作,从而返回此文件
{"field1":""}
您可以执行以下操作(关键是输出标记具有相同的名称):
输出:
1: {"field1":""}
2: {"field1":"foo"}
我发现在研究如何使用struct composition操作JSON输出时非常有用。您可以执行以下操作(关键是输出标记具有相同的名称):
输出:
1: {"field1":""}
2: {"field1":"foo"}
在研究如何使用struct composition操作JSON输出时,我发现这非常有用。在使用标记的标准库中无法做到这一点。您可以为
Outer
实现自定义封送拆收器以删除该字段。在标准库中,使用标记无法做到这一点。您可以为外部
实现自定义封送拆收器以删除该字段。