我正在尝试更改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`
这可能在旅途中完成吗?
答案 0 :(得分:0)
将json解组为map[string]interface{}
编写一个递归到map[string]interface
的函数,以查找称为“名称”的键
将这些密钥复制到同一地图中的“ name @ lang”,然后删除“ name”密钥
再次将修改过的地图编组出来