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

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

Linda Hamilton
Linda Hamiltonasal
2024-12-04 00:48:10751semak imbas

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

Menyahmarshalling Objek JSON Bersarang sebagai Rentetan atau Tatasusunan Byte

Menyahmarshalling JSON boleh disesuaikan untuk mengendalikan objek bersarang dengan cara tertentu. Dalam soalan itu, matlamatnya adalah untuk menghuraikan objek JSON, mengekalkan objek bersarang sebagai rentetan atau tatasusunan bait dan mengelakkan penetapan medan automatik.

Untuk mencapai ini, pakej pengekodan/json menyediakan json.RawMessage taip. Seperti yang diterangkan dalam dokumentasi, json.RawMessage ialah objek JSON yang dikodkan mentah yang boleh digunakan untuk menangguhkan atau prakiraan penyahkodan JSON.

Begini cara menggunakan json.RawMessage untuk mengendalikan objek bersarang dalam rentetan JSON yang disediakan:

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

Dalam kes ini, medan foo struct Bar akan mengandungi bait JSON mentah yang mewakili objek bersarang, dan bukannya menghuraikannya ke dalam struct Go. Outputnya akan kelihatan seperti ini:

{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 mengawal cara objek JSON bersarang dikendalikan semasa unmarshalling, membolehkan lebih fleksibiliti dalam saluran paip pemprosesan data anda.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyahmarshal Objek JSON Bersarang sebagai Rentetan atau Tatasusunan 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