为了账号安全,请及时绑定邮箱和手机立即绑定

当并非所有 Struct 值都可以转换为 interface{} 时重命名 JSON 标签

当并非所有 Struct 值都可以转换为 interface{} 时重命名 JSON 标签

Go
慕田峪4524236 2023-06-12 15:30:58
假设我有以下内容struct,并且我想根据代码中的一些字符串变量重命名 X 和 Y。type RenameStruct struct {     X map[string]interface{}     Y []map[string]interface{} }在编码为 JSON 时重命名它们的最佳方法是什么?我在 StackOverflow 中找到的那些似乎不适用于struct一个字段是一个interface{}ant 而另一个是[]interface{}.编辑:我使用 Dave 的回答以这种方式创建“RenameStruct”列表:play.golang.org/p/hKZQvhJV2iL
查看完整描述

1 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

您需要使用自定义 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


查看完整回答
反对 回复 2023-06-12
  • 1 回答
  • 0 关注
  • 171 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信