在 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中文网其他相关文章!