将嵌套 JSON 对象解组为字符串或字节数组
可以自定义 JSON 解组以以特定方式处理嵌套对象。在问题中,目标是解析 JSON 对象,将嵌套对象保留为字符串或字节数组,并避免自动字段分配。
为了实现此目的,encoding/json 包提供了 json.RawMessage类型。如文档中所述,json.RawMessage 是原始编码的 JSON 对象,可用于延迟或预计算 JSON 解码。
以下是如何使用 json.RawMessage 处理提供的 JSON 字符串中的嵌套对象:
package main import ( "encoding/json" "fmt" ) type Bar struct { ID int64 `json:"id"` Foo json.RawMessage `json:"foo"` } func main() { var bar Bar err := json.Unmarshal([]byte(`{ "id": 15, "foo": { "foo": 123, "bar": "baz" } }`), &bar) if err != nil { panic(err) } fmt.Printf("%+v\n", bar) }
在这种情况下,Bar 结构的 foo 字段将包含表示嵌套对象的原始 JSON 字节,而不是将其解析为一个 Go 结构体。输出将如下所示:
{ID:15 Foo:[123 32 34 102 111 111 34 58 32 49 50 51 44 32 34 98 97 114 34 58 32 34 98 97 122 34 32 125]}
通过使用 json.RawMessage,您可以控制在解组期间处理嵌套 JSON 对象的方式,从而使数据处理管道更加灵活。
以上是如何在 Go 中将嵌套 JSON 对象解组为字符串或字节数组?的详细内容。更多信息请关注PHP中文网其他相关文章!