Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Golang-覆盖嵌入字段的JSON标记_Json_Go_Struct - Fatal编程技术网

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
实现自定义封送拆收器以删除该字段。在标准库中,使用标记无法做到这一点。您可以为
外部
实现自定义封送拆收器以删除该字段。