登录
首页 >  Golang >  Go问答

更改 JSON 标签以排除部分 Struct 值的转换

来源:stackoverflow

时间:2024-03-07 18:36:26 420浏览 收藏

学习知识要善于思考,思考,再思考!今天golang学习网小编就给大家带来《更改 JSON 标签以排除部分 Struct 值的转换》,以下内容主要包含等知识点,如果你正在学习或准备学习Golang,就都不要错过本文啦~让我们一起来看看吧,能帮助到你就更好了!

问题内容

假设我有以下 struct 并且我想根据代码中的一些字符串变量重命名 x 和 y。

type RenameStruct struct {
    X map[string]interface{}
    Y []map[string]interface{}
}

编码为 json 时重命名它们的最佳方法是什么? 我在 stackoverflow 中找到的那些似乎不适用于 struct,其中一个字段是 interface{} ,另一个字段是 []interface{}

编辑:我使用戴夫的答案以这种方式创建“renamestruct”列表:play.golang.org/p/hkzqvhjv2il


解决方案


您需要使用自定义 json 编组器,然后通过某种方式传递您想要的名称。我能想到的唯一简单的方法是:

type RenameStruct struct {
    X map[string]interface{}
    Y []map[string]interface{}
    xName string
    yName string
}

func (r RenameStruct) MarshalJSON() ([]byte, error) {
    data := make(map[string]interface{})
    data[r.xName] = r.X
    data[r.yName] = r.Y
    return json.Marshal(data)
}

https://play.golang.org/p/cpjgJ5tpcK3

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>