首頁 >後端開發 >Golang >如何在 Go 中將巢狀 JSON 物件解組為字串或位元組數組?

如何在 Go 中將巢狀 JSON 物件解組為字串或位元組數組?

Linda Hamilton
Linda Hamilton原創
2024-12-04 00:48:10697瀏覽

How Can I Unmarshal Nested JSON Objects as Strings or Byte Arrays in Go?

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn