Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengakses Tatasusunan JSON Bersarang di Golang Selepas Unmarshalling?

Bagaimana untuk Mengakses Tatasusunan JSON Bersarang di Golang Selepas Unmarshalling?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-04 18:54:02364semak imbas

How to Access Nested JSON Arrays in Golang After Unmarshalling?

Mengakses Tatasusunan JSON Bersarang di Golang Selepas Nyahmarshall

Apabila bekerja dengan respons JSON di Golang, anda mungkin menghadapi kesukaran mengakses elemen JSON bersarang tatasusunan. Ini boleh berlaku apabila cuba mengakses elemen tertentu dalam tatasusunan "objek", mengakibatkan ralat seperti "antara muka jenis {} tidak menyokong pengindeksan."

Punca Ralat

Ralat timbul kerana pembolehubah antara muka dalam Go tidak menyokong pengindeksan. Apabila anda menyahkod muatan JSON ke dalam pembolehubah antara muka, modul JSON mewakili tatasusunan sebagai hirisan []antara muka{} dan kamus sebagai peta[rentetan]antaramuka{} peta.

Penyelesaian 1: Menggunakan Penegasan Jenis

Untuk mengakses elemen tertentu dalam tatasusunan "objek", anda boleh menggunakan penegasan jenis untuk menukar pembolehubah antara muka kepada jenis konkrit. Walau bagaimanapun, pendekatan ini memerlukan semakan ralat untuk mengendalikan kes di mana penegasan jenis gagal.

<code class="go">objects := result["objects"].([]interface{})
first := objects[0].(map[string]interface{})
fmt.Println(first["ITEM_ID"])</code>

Penyelesaian 2: Menyahkod ke dalam Struktur

Jika muatan JSON mempunyai format yang diketahui, penyelesaian yang lebih mantap ialah menyahkodnya terus ke dalam struktur tersuai. Ini membolehkan anda menentukan struktur yang diharapkan, menghapuskan keperluan untuk penegasan jenis dan pengendalian ralat.

<code class="go">type Result struct {
    Query   string `json:"query"`
    Count   int    `json:"count"`
    Objects []struct {
        ItemId      string `json:"ITEM_ID"`
        ProdClassId string `json:"PROD_CLASS_ID"`
        Available   int    `json:"AVAILABLE"`
    } `json:"objects"`
}

var result Result
if err := json.Unmarshal(payload, &result); err != nil {
    panic(err)
}
fmt.Println(result.Objects[0].ItemId)</code>

Dengan memilih penyelesaian yang sesuai berdasarkan kes penggunaan tertentu, anda boleh mengakses tatasusunan JSON bersarang dengan lancar di Golang selepas unmarshalling.

Atas ialah kandungan terperinci Bagaimana untuk Mengakses Tatasusunan JSON Bersarang di Golang Selepas Unmarshalling?. 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