Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Pergi Mengendalikan Penyahkodan dan Kemas Kini JSON Separa dengan Cekap?

Bagaimanakah Pergi Mengendalikan Penyahkodan dan Kemas Kini JSON Separa dengan Cekap?

Susan Sarandon
Lepaskan: 2024-12-27 09:06:14
asal
501 orang telah melayarinya

How Can Go Handle Partial JSON Decoding and Updates Efficiently?

Mengendalikan Penyahkodan dan Kemas Kini JSON Separa dalam Go

Dalam kes di mana struktur objek JSON adalah dinamik, pembongkaran JSON tradisional boleh menyebabkan kehilangan data akibat pemangkasan medan. Untuk menangani perkara ini, pertimbangkan penyelesaian yang menggabungkan struct biasa dengan json.RawMessage, yang membenarkan kemas kini terpilih sambil mengekalkan maklumat yang tidak diketahui.

Struktur Warna menggambarkan pendekatan ini:

type Color struct {
    Space string
    raw   map[string]json.RawMessage
}
Salin selepas log masuk

Semasa JSON unmarshalling, kaedah UnmarshalJSON membaca keseluruhan data menjadi mentah dan mendapatkan semula medan yang diingini (cth., Space) daripada mentah jika wujud:

func (c *Color) UnmarshalJSON(bytes []byte) error {
    if err := json.Unmarshal(bytes, &c.raw); err != nil {
        return err
    }
    // ...
    return nil
}
Salin selepas log masuk

Untuk JSON marshalling, kaedah MarshalJSON meletakkan semula medan yang diingini menjadi mentah, memastikan medan yang dikemas kini disertakan dalam output:

func (c *Color) MarshalJSON() ([]byte, error) {
    // ...
    return json.Marshal(c.raw)
}
Salin selepas log masuk

Ini pendekatan membenarkan kemas kini medan terpilih sambil mengekalkan seluruh data JSON, termasuk struktur yang tidak diketahui atau dinamik.

Atas ialah kandungan terperinci Bagaimanakah Pergi Mengendalikan Penyahkodan dan Kemas Kini JSON Separa dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan