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

Bagaimanakah Saya Mengakses Tatasusunan JSON Bersarang dalam Go?

Susan Sarandon
Susan Sarandonasal
2024-11-04 14:54:30955semak imbas

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>

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>

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>

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>

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!

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