首页 >后端开发 >Golang >如何在 Go 中将嵌套 JSON 对象解码为原始数据?

如何在 Go 中将嵌套 JSON 对象解码为原始数据?

Patricia Arquette
Patricia Arquette原创
2024-12-06 16:48:15214浏览

How to Decode Nested JSON Objects into Raw Data in Go?

JSON 将嵌套对象解码为原始数据

在 JSON 解码的世界中,有时您可能会遇到不需要完全解析的嵌套对象解析。相反,您可能更愿意将其视为原始字符串或字节数组。下面是演示此方法的示例代码:

package main

import (
    "encoding/json"
    "fmt"
)

type Bar struct {
    ID  int64           `json:"id"`
    Foo json.RawMessage `json:"foo"`
}

func main() {
    jsonStr := []byte(`{
        "id"  : 15,
        "foo" : { "foo": 123, "bar": "baz" }
    }`)

    var bar Bar

    if err := json.Unmarshal(jsonStr, &bar); err != nil {
        panic(err)
    }

    fmt.Printf("%+v\n", bar)
}

在此示例中,Bar 结构包含两个字段:ID 和 Foo。 ID 字段是 int64,而 Foo 字段声明为 json.RawMessage。这种类型允许我们保存与嵌套对象关联的 JSON 字节。

解码 JSON 时,RawMessage 字段将存储表示嵌套对象的原始 JSON 字节。这包括该对象内的任何嵌套字段,允许您稍后在需要时访问它们。

当您想要推迟解析 JSON 的特定部分以节省计算资源时,此方法非常有用。它还在处理嵌套对象方面提供了更大的灵活性,而无需为每个对象定义自定义类型。

以上是如何在 Go 中将嵌套 JSON 对象解码为原始数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn