如何通过自定义GoLang中的json.Marshal来获得特定字段的值

如何通过自定义GoLang中的json.Marshal来获得特定字段的值,go,Go,我的项目中有许多结构,但这些结构有一些共同的领域: type someStructure1 struct { field1 string field2 string field3 []*someStructure2 } type someStructure2 struct { field4 string field5 string field6 string field7 string } type someStructure3 str

我的项目中有许多结构,但这些结构有一些共同的领域:

type someStructure1 struct {
    field1 string
    field2 string
    field3 []*someStructure2
}

type someStructure2 struct {
    field4 string
    field5 string
    field6 string
    field7 string
}

type someStructure3 struct {
    field2 string
    field5 string
}
因此,我希望这里的所有结构都有json表示,但json表示应该隐藏或替换field2、field5的值,以(比方说)某种散列。考虑到我不想修改我得到的原始结构引用

我想写一些像这样的函数

func parseStructureToHideInfo (arg interface{}, fieldsToHide []string) string 

通过在json标记中使用
-
,可以省略
json.Marshal
输出中的字段。i、 e.
field2字符串`json:“-”`
。或者保持字段不被报告,因为你已经有了它们,你不需要做任何事情,json将是空的。嗨@mkopriva,我不想省略字段,事实上我想用其他东西替换它们的值,让我们假设我只想用“*”替换值使用自定义类型,并让自定义类型实现
json.Marshaler
接口,让实现返回您喜欢的任何值,然后返回的值将包含在json中,而不是字段的原始值。示例: