„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie kann ich in Go sicher auf verschachtelte JSON-Arrays zugreifen?

Wie kann ich in Go sicher auf verschachtelte JSON-Arrays zugreifen?

Veröffentlicht am 09.11.2024
Durchsuche:788

How to Safely Access Nested JSON Arrays in Go?

Entschlüsseln von JSON-Array-Zugriffsproblemen in Go

Bei der Arbeit mit JSON-Antworten in Go kann der Zugriff auf Elemente in verschachtelten Arrays eine Herausforderung darstellen. Beim Versuch, bestimmte Datenpunkte abzurufen, treten häufig Fehler wie „Typschnittstelle {} unterstützt keine Indizierung“ auf.

Um dieses Problem zu beheben, ist es wichtig, die zugrunde liegende Natur von JSON-Antworten in Go zu verstehen. Standardmäßig werden Arrays als []interface{}-Slices dargestellt, während Wörterbücher als Map[string]interface{}-Maps umgewandelt werden. Folglich fehlt Schnittstellenvariablen die Unterstützung für die Indizierung.

Um auf verschachtelte Elemente zuzugreifen, werden Typzusicherungen erforderlich. Ein Ansatz besteht darin, Folgendes ohne Fehlerprüfung durchzuführen:

objects := result["objects"].([]interface{})
first := objects[0].(map[string]interface{})
fmt.Println(first["ITEM_ID"])

Diese Methode kann jedoch zu Panik führen, wenn die Typen nicht übereinstimmen. Ein robusterer Ansatz besteht darin, das Formular mit zwei Rückgaben zu verwenden und potenzielle Fehler zu behandeln:

objects, ok := result["objects"].([]interface{})
if !ok {
    // Handle error
}

Wenn Ihr JSON einer konsistenten Struktur folgt, sollten Sie erwägen, direkt in einen benutzerdefinierten Typ zu dekodieren:

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

Nach der Dekodierung können Sie nahtlos auf verschachtelte Elemente wie result.Objects[0].ItemId.

zugreifen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3