我有一个由许多不同类型实现的接口 EventAggregation。我需要使用相同的两个字段来丰富所有这些类型,所以我正在做这样的事情:type messagePayload struct { domain.EventAggregation SourceSystem string `json:"sourceSystem"` MessageTimestamp int `json:"messageTimestamp"`}然后我用这个方法把它翻译成一个字符串:func (payload messagePayload) payloadToString() string { jsonForm, _ := json.Marshal(payload) return string(jsonForm)}但它会创建一个以“EventAggregation”为键的字符串,并且字段作为对象嵌入其中,如下所示:{"EventAggregation":{"startTime":1575941942501,"endTime":1581461995869,"computeTimestamp":1582573485983,"eventType":"foo","count":146692},"sourceSystem":"bar","messageTimestamp":1582573497406}如何以使 EventAggregation 中的字段与字段“SourceSystem”和“MessageTimestamp”处于同一级别的方式创建字符串?像这样:{"startTime":1575941942501,"endTime":1581461995869,"computeTimestamp":1582573485983,"eventType":"foo","count":146692,"sourceSystem":"bar","messageTimestamp":1582573497406}如果嵌入式对象是结构而不是接口,则相同的代码似乎可以工作,但考虑到有多少不同的结构实现了“EventAggregation”接口,这并不是超级实用。
2 回答
当年话下
TA贡献1890条经验 获得超9个赞
如果我理解你的问题,也许它可以帮助你:
type messagePayload struct {
domain.EventAggregation `json:"-"`
SourceSystem string `json:"sourceSystem"`
MessageTimestamp int `json:"messageTimestamp"`
}
摇曳的蔷薇
TA贡献1793条经验 获得超6个赞
您需要做的就是在 json 编码时忽略此文件。试试这个:
type messagePayload struct {
domain.EventAggregation `json:"-"`
SourceSystem string `json:"sourceSystem"`
MessageTimestamp int `json:"messageTimestamp"`}要查看更多支持的标签,请访问: https ://golang.org/pkg/encoding/json/#Marshal
- 2 回答
- 0 关注
- 189 浏览
添加回答
举报
0/150
提交
取消
