您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

JSON和处理未导出的字段

JSON和处理未导出的字段

有技术原因。除非已导出,否则json库无权使用反射查看字段。包只能查看其自己包中类型的未导出字段

为了解决您的问题,您可以做的是使用导出的字段创建未导出的类型。如果将Json毫无问题地传递给未导出的类型,它将解组,但是它不会显示api文档中。然后,您可以创建嵌入未导出类型的导出类型。然后,此导出的类型将需要方法来实现json.Marshalerandjson.Unmarshaler接口。

注意:所有代码未经测试,甚至可能无法编译。

type jsonData struct {
    Field1 string
    Field2 string
}

type JsonData struct {
    jsonData
}

// Implement json.Unmarshaller
func (d *JsonData) UnmarshalJSON(b []byte) error {
    return json.Unmarshal(b, &d.jsonData)
}

// Getter
func (d *JsonData) Field1() string {
    return d.jsonData.Field1
}
其他 2022/1/1 18:14:55 有444人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶