Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menyahmarshal Objek JSON ke dalam Struktur dengan Peta Slices?

Bagaimana untuk Menyahmarshal Objek JSON ke dalam Struktur dengan Peta Slices?

Patricia Arquette
Patricia Arquetteasal
2024-10-31 16:39:29895semak imbas

How to Unmarshal a JSON Object into a Struct with a Map of Slices?

Custom Unmarshalling a Struct into a Map of Slices

Masalah

Custom unmarshaling diperlukan untuk menyahkod JSON ke dalam struct dengan peta kepingan. Menggunakan gelagat lalai, peta kekal kosong.

Penyelesaian

Menggunakan Unmarshaler Tersuai:

  1. Laksanakan antara muka json.Unmarshaler untuk struct sasaran.
  2. Dalam kaedah UnmarshalJSON:

    • Nyahmarshal kekunci dan nilai objek JSON sebagai JSON mentah dan tidak dinyahkod.
    • Ekstrak medan Terakhir daripada nilai JSON mentah, jika ia wujud.
    • Tukar nilai mentah ke dalam peta kepingan dan tetapkan ia kepada medan Pasangan.

Penyelesaian Alternatif (Tidak Menggunakan Peta):

Jika struktur JSON dibetulkan, struct sasaran boleh dilaraskan agar sepadan dengan reka letak JSON tanpa menggunakan peta.

Contoh:

Kod unmarshaling tersuai menggunakan kaedah UnmarshalJSON tersuai:

<code class="go">func (r *OHLC_RESS) UnmarshalJSON(d []byte) error {
    // Decode keys and values
    var obj map[string]json.RawMessage
    if err := json.Unmarshal(d, &obj); err != nil {
        return err
    }

    // Extract "last" field
    if last, ok := obj["last"]; ok {
        if err := json.Unmarshal(last, &r.Last); err != nil {
            return err
        }
        delete(obj, "last")
    }

    // Decode and assign Pair field
    r.Pair = make(map[string][]Candles, len(obj))
    for key, val := range obj {
        cc := []Candles{}
        if err := json.Unmarshal(val, &cc); err != nil {
            return err
        }
        r.Pair[key] = cc
    }
    return nil
}</code>

Penyelesaian alternatif dengan melaraskan struct:

<code class="go">type OHLC_RESS struct {
    Pair []Candles `json:"XXBTZUSD"`
    Last int64     `json:"last"`
}</code>

Atas ialah kandungan terperinci Bagaimana untuk Menyahmarshal Objek JSON ke dalam Struktur dengan Peta Slices?. 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