我已经看到了很多方法来编组/解组只有未导出字段的结构。但是我怎么能用混合字段来做到这一点呢?
给定一个结构:
type Test struct {
fieldA string `json:"fieldA"`
FieldB int `json:"fieldB"`
FieldC string `json:"fieldC"`
}
如何编写 MarshalJSON/UnmarshalJSON 函数,以便 fieldA 与 FieldB 和 FieldC 一起传输?
以下编译,但当我运行它时会溢出调用堆栈。我的猜测是我正在递归编组对象,但我不确定在编码时如何保留导出和未导出的字段。
func (t *Test) MarshalJSON() ([]byte, error) {
return json.Marshal(struct {
*Test
FieldA string `json:"fieldA"`
}{
t,
t.fieldA,
})
}
func (t *Test) UnmarshalJSON(b []byte) error {
return json.Unmarshal(b, &t)
}
有没有办法做到这一点?或者我应该重新考虑我的数据结构,也许只是导出该字段?
注意:我知道我可以手动完成每个字段,但如果可能的话,我想避免这种情况,以使更新代码更易于管理。
相关分类