gpt4 book ai didi

json - 在 go 中编码 json 标签

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

我正在尝试更改 json 中的编码,并同时使用了 encoding/json 和 jsoniter。我想要完成的是,如果我提供一种语言,它会将相关字段名称编码为“name@lang”而不是“name”。我一直在尝试以下操作:

func registerFieldEncoder(field string) {
encoderFunc := func(p unsafe.Pointer, stream *jsoniter.Stream) {
fmt.Print("test")
str := *(*string)(unsafe.Pointer(p))
newstr := str + "@sv"
stream.WriteString(newstr)
}
isEmptyFunc := func(p unsafe.Pointer) bool {
str := *(*string)(unsafe.Pointer(p))
return len(str) == 0
}
jsoniter.RegisterTypeEncoderFunc(field, encoderFunc, isEmptyFunc)
jsoniter.RegisterFieldEncoderFunc("", field, encoderFunc, isEmptyFunc) }

字段代表json标签,即

`json:"field`

这有可能在 go 中完成吗?

最佳答案

将 json 解码为 map[string]interface{}

编写一个递归到 map[string]interface 中寻找名为“name”的键的函数

将这些键复制到同一个映射中的“name@lang”,然后删除“name”键

再次编码修改后的 map

关于json - 在 go 中编码 json 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53537850/

26 4 0