gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 03:09:14 25 4
gpt4 key购买 nike

假设我有以下 struct,我想根据代码中的一些字符串变量重命名 X 和 Y。

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

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

编辑:我使用 Dave 的回答以这种方式创建“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

关于go - 当并非所有 Struct 值都可以转换为 interface{} 时重命名 JSON 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54950861/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com