Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Menyahmarshal Objek JSON Bersarang sebagai Rentetan atau Kepingan Bait dalam Go?

Bagaimanakah Saya Boleh Menyahmarshal Objek JSON Bersarang sebagai Rentetan atau Kepingan Bait dalam Go?

Linda Hamilton
Linda Hamiltonasal
2024-12-17 02:18:25544semak imbas

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

Menyahmarakkan Objek Bersarang JSON sebagai Rentetan atau Kepingan Bait

Dalam data JSON, objek bersarang menyediakan tahap maklumat tambahan. Walau bagaimanapun, apabila menyahkarang data ini ke dalam struktur Go, anda mungkin mahu menganggap objek ini sebagai data mentah dan bukannya nilai yang dihuraikan.

Untuk mencapai ini, pakej pengekodan/json menawarkan penyelesaian: json.RawMessage.

Menggunakan RawMessage untuk Merawat Objek Bersarang sebagai Mentah Data

json.RawMessage ialah jenis yang mewakili data JSON yang dikodkan. Ia membolehkan anda melambatkan penyahkodan JSON atau prakiraan pengekodan JSON.

Ini amat berguna apabila anda ingin mengendalikan objek bersarang sebagai rentetan atau kepingan bait. Begini cara anda boleh menggunakannya:

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)
}

Contoh Output

{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]}

Dengan menggunakan json.RawMessage, anda boleh merawat objek bersarang sebagai rentetan mentah atau kepingan bait. Ini membolehkan anda memproses data dengan lebih lanjut atau menyimpannya untuk kegunaan kemudian.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyahmarshal Objek JSON Bersarang sebagai Rentetan atau Kepingan Bait dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn