Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengendalikan Tatasusunan Bersarang dalam Go JSON Unmarshalling?

Bagaimana untuk Mengendalikan Tatasusunan Bersarang dalam Go JSON Unmarshalling?

Patricia Arquette
Patricia Arquetteasal
2024-11-05 16:10:03954semak imbas

How to Handle Nested Arrays in Go JSON Unmarshalling?

Golang JSON: Mengendalikan Tatasusunan Bersarang dengan Menyahmarshalling

Dalam Go, apabila bekerja dengan tatasusunan JSON bersarang selepas unmarshalling, adalah penting untuk memahami ralat "antara muka jenis {} tidak menyokong pengindeksan." Ralat ini timbul apabila anda cuba mengakses elemen dalam tatasusunan JSON yang disimpan dalam pembolehubah{} antara muka.

Untuk menyelesaikan isu ini, anda perlu menggunakan penegasan jenis untuk menukar pembolehubah{} antara muka kepada pembolehubah jenis tatasusunan yang mendasari.

Perwakilan{} Antara Muka dalam Modul JSON

Modul JSON mewakili tatasusunan sebagai hirisan []antaramuka{} dan kamus sebagai peta[rentetan]antaramuka{ } memetakan apabila menyahkod ke dalam pembolehubah{} antara muka.

Mengakses Elemen Bersarang dengan Penegasan Jenis

Tanpa semakan ralat, anda boleh menavigasi tatasusunan JSON menggunakan penegasan jenis seperti berikut :

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

Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa penegasan jenis ini boleh panik jika jenis tidak sepadan. Untuk mengelakkan isu ini, anda boleh menggunakan borang dua pemulangan dan semak ralat:

<code class="go">objects, ok := result["objects"].([]interface{})
if !ok {
    // Handle error here
}</code>

Menyahkod ke dalam Struktur untuk Akses yang Dipertingkat

Jika JSON data mengikut format yang konsisten, penyelesaian yang lebih cekap ialah menyahkodnya kepada jenis berstruktur. Contohnya, berdasarkan data yang disediakan:

<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"`
}</code>

Dengan menyahkod ke dalam struktur ini, anda boleh mengakses ID item secara terus menggunakan result.Objects[0].ItemId. Pendekatan ini menghapuskan keperluan untuk penegasan jenis dan menyediakan kaedah selamat jenis untuk mengakses elemen bersarang.

Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan Tatasusunan Bersarang dalam Go JSON 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