在go中编码json标签

时间:2018-11-29 11:19:05

标签: json go marshalling

我正在尝试更改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`

这可能在旅途中完成吗?

1 个答案:

答案 0 :(得分:0)

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

编写一个递归到map[string]interface的函数,以查找称为“名称”的键

将这些密钥复制到同一地图中的“ name @ lang”,然后删除“ name”密钥

再次将修改过的地图编组出来