Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menyahkod Objek JSON Bersarang ke dalam Data Mentah dalam Go?

Bagaimana untuk Menyahkod Objek JSON Bersarang ke dalam Data Mentah dalam Go?

Patricia Arquette
Patricia Arquetteasal
2024-12-06 16:48:15220semak imbas

How to Decode Nested JSON Objects into Raw Data in Go?

JSON Menyahkod Objek Bersarang menjadi Data Mentah

Dalam dunia penyahkodan JSON, ada kalanya anda mungkin menghadapi objek bersarang yang anda tidak perlukan sepenuhnya menghuraikan. Sebaliknya, anda mungkin lebih suka menganggapnya sebagai rentetan mentah atau tatasusunan bait. Berikut ialah kod sampel yang menunjukkan pendekatan ini:

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

Dalam contoh ini, struct Bar mengandungi dua medan: ID dan Foo. Medan ID ialah int64, manakala medan Foo diisytiharkan sebagai json.RawMessage. Jenis ini membolehkan kami menahan bait JSON yang dikaitkan dengan objek bersarang.

Apabila menyahkod JSON, medan RawMessage akan menyimpan bait JSON mentah yang mewakili objek bersarang. Ini termasuk mana-mana medan bersarang dalam objek itu, membolehkan anda mengaksesnya kemudian jika perlu.

Pendekatan ini berguna apabila anda ingin menangguhkan penghuraian bahagian tertentu JSON untuk menyimpan sumber pengiraan. Ia juga memberikan fleksibiliti yang lebih besar dalam mengendalikan objek bersarang tanpa perlu menentukan jenis tersuai untuk setiap objek.

Atas ialah kandungan terperinci Bagaimana untuk Menyahkod Objek JSON Bersarang ke dalam Data Mentah 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