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