Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Mengakses Tatasusunan JSON Bersarang dalam Go?

Bagaimanakah Saya Mengakses Tatasusunan JSON Bersarang dalam Go?

Susan Sarandon
Lepaskan: 2024-11-04 14:54:30
asal
992 orang telah melayarinya

How Do I Access Nested JSON Arrays in Go?

Mengakses Tatasusunan JSON Bersarang dalam Go

Dalam Go, cabaran timbul apabila mengakses tatasusunan JSON bersarang selepas menyahmarshall. Apabila cuba mendapatkan semula elemen daripada tatasusunan "objek" dalam respons, ralat "antara muka jenis {} tidak menyokong pengindeksan" mungkin ditemui.

Memahami Masalah

Secara lalai, modul JSON dalam Go mewakili tatasusunan sebagai hirisan []antara muka{} dan kamus sebagai peta[rentetan]antara muka{} peta. Oleh itu, apabila menyahkod ke dalam pembolehubah{} antara muka, mengakses elemen bersarang menggunakan pengindeksan secara langsung akan gagal.

Penyelesaian: Taip Penegasan

Satu pendekatan untuk menangani isu ini adalah melalui jenis penegasan. Ini melibatkan penukaran antara muka{} pembolehubah kepada jenis konkrit asas. Contohnya, untuk mengekstrak ITEM_ID daripada objek pertama dalam tatasusunan "objek":

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

Taip Penegasan dengan Semakan Ralat

Apabila melakukan penegasan jenis, ia adalah penting untuk menggabungkan pemeriksaan ralat untuk mengendalikan penukaran yang salah. Contoh:

<code class="go">objects, ok := result["objects"].([]interface{})
if !ok {
    // Handle type conversion error
}</code>
Salin selepas log masuk

Menyahkod ke dalam Struktur

Penyelesaian alternatif, disyorkan untuk JSON dengan format yang diketahui, ialah menyahkod terus ke dalam struktur tersuai. Tentukan struct untuk memadankan struktur JSON, dan nyahkod ke dalamnya:

<code class="go">type Result struct {
    Query string
    Count int
    Objects []struct {
        ItemId      string
        ProdClassId string
        Available   int
    }
}</code>
Salin selepas log masuk

Ini membolehkan anda mengakses data secara langsung, menghapuskan keperluan untuk penegasan jenis:

<code class="go">var result Result
json.Unmarshal(payload, &result)
fmt.Println(result.Objects[0].ItemId)</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Mengakses Tatasusunan JSON Bersarang dalam Go?. 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