將巢狀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中文網其他相關文章!