+ 收藏我们

网站模板

网站模板搜索
404模板 营销型模板 外贸网站模板 单页模板 双语模板 标签大全
电话:18630701785
首页 > 站长学院 > 是否可以在 Go 中“按原样”添加嵌套 json? >

是否可以在 Go 中“按原样”添加嵌套 json?

时间:2024-04-07 10:21:11

本篇文章给大家分享《是否可以在 Go 中“按原样”添加嵌套 JSON?》,覆盖了golang的常见基础知识,其实一个语言的全部知识点一篇文章是不可能说完的,但希望通过这些问题,让读者对自己的掌握程度有一定的认识(B 数),从而弥补自己的不足,更好的掌握它。

问题内容
这是“按原样”添加嵌套 json 的可能方法吗?嵌套的 json 没有任何结构,并且可能会有所不同。我需要将嵌套的json数据直接放入根节点。

https://play.golang.org/p/mzbt7dlqepd

type RootJson struct {
    NestedJson []byte
    AdditionalField string
}

func main() {
    nestedJson := []byte("{\"number\": 1, \"string\": \"string\", \"float\": 6.56}")

    rootJson := RootJson{nestedJson, "additionalField"}
    payload, _ := json.Marshal(&rootJson)

    fmt.Println(string(payload))

}

解决方案

是的,这是可能的。使用实现自定义编组/解组的 json.RawMessage 类型,将其按原样“呈现”到 json 输出中。它只是一个普通的字节切片:

type rawmessage []byte
它的值应该是原始 json 文本的 utf-8 编码字节序列(正是进行转换时得到的值,例如 []byte("sometext"))。

type rootjson struct {
    nestedjson      json.rawmessage
    additionalfield string
}
这样,输出将是(在 Go Playground 上尝试):

{"NestedJson":{"number":1,"string":"string","float":6.56},
    "AdditionalField":"additionalField"}
(我添加的缩进。)

今天带大家了解了的相关知识,希望对你有所帮助;

有问题可以加入网站技术QQ群一起交流学习

本站会员学习、解决问题QQ群(691961965)

客服微信号:lpf010888

Title