将 JSON 嵌套对象解组为字符串或字节切片
在 JSON 数据中,嵌套对象提供额外级别的信息。但是,当将此数据解组为 Go 结构时,您可能希望将这些对象视为原始数据而不是解析值。
为了实现此目的,encoding/json 包提供了一个解决方案:json.RawMessage。
使用 RawMessage 将嵌套对象视为原始数据
json.RawMessage是表示编码 JSON 数据的类型。它允许您延迟 JSON 解码或预先计算 JSON 编码。
当您想要将嵌套对象作为字符串或字节切片处理时,这特别有用。使用方法如下:
import ( "encoding/json" "fmt" ) type Bar struct { Id int64 `json:"id"` Foo json.RawMessage `json:"foo"` } func main() { // Example JSON with a nested object jsonStr := []byte(`{ "id" : 15, "foo" : { "foo": 123, "bar": "baz" } }`) var bar Bar err := json.Unmarshal(jsonStr, &bar) if err != nil { panic(err) } fmt.Printf("%+v\n", bar) }
示例输出
{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,您可以将嵌套对象视为原始字符串或字节片。这允许您进一步处理数据或存储数据以供以后使用。
以上是如何在 Go 中将嵌套 JSON 对象解组为字符串或字节切片?的详细内容。更多信息请关注PHP中文网其他相关文章!