编组与私人领域结合
作为一名优秀的开发人员,你已使用导出和未导出的字段创建了以下结构:
type MyStruct struct {
uuid string
Name string
}
游乐场中的示例: https : //play.golang.org/p/Zk94Il2ANZ
现在,你希望将此结构转换为有效的 JSON,以便存储在 etcd 之类的内容中。但是,由于 uuid
没有导出,json.Marshal()
会跳过它。该怎么办?使用匿名结构和 json.MarshalJSON()
接口! 这是一个例子:
type MyStruct struct {
uuid string
Name string
}
func (m MyStruct) MarshalJSON() ([]byte, error {
j, err := json.Marshal(struct {
Uuid string
Name string
}{
Uuid: m.uuid,
Name: m.Name,
})
if err != nil {
return nil, err
}
return j, nil
}
游乐场中的示例: https : //play.golang.org/p/Bv2k9GgbzE