如何通过自定义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中,而不是字段的原始值。示例: