Einführung
Ihre JSON-Daten haben ein unbekanntes Format, was eine Herausforderung beim Unmarshalling darstellt es in eine GoLang-Struktur. Dieser Artikel führt Sie durch die Schritte zur effektiven Bewältigung dieses Szenarios.
Unmarshalieren mit Map[string]interface{}
Da Sie die Schlüssel nicht kennen Im Voraus können Sie „map[string]interface{}“ verwenden, um Ihre JSON-Nutzlast zu entmarshalieren. Dadurch können Sie die Schlüssel-Wert-Paare als Karte speichern, ohne die Typen der Werte anzugeben.
var grades map[string]interface{} err := json.Unmarshal([]byte(jsonString), &grades) fmt.Println(err) fmt.Printf("%#v\n", grades)
Dadurch werden die JSON-Daten als verschachtelte Zuordnung von Zeichenfolgen zu Schnittstellen ausgegeben, was für die dynamische Überprüfung und Verarbeitung der Daten nützlich sein kann.
Verwenden von json:"-" Tag
Sie können bestimmte Felder vom JSON-Marshalling/Unmarshaling ausschließen Verwenden des json:"-"-Tags. Dies kann nützlich sein, wenn Sie einige Daten privat halten oder Zirkelverweise vermeiden möchten.
type GradeData struct { Grades map[string]interface{} `json:"-"` } var gradesData GradeData err := json.Unmarshal([]byte(jsonString), &gradesData.Grades) fmt.Println(err) fmt.Printf("%#v\n", gradesData)
In diesem Beispiel wird das Feld „Grades“ nicht in die JSON-Darstellung von gradesData einbezogen, kann aber dennoch zum Speichern und Abrufen des JSON verwendet werden Daten.
Fazit
Durch die Verwendung von map[string]interface{} und dem json:"-"-Tag, Sie können JSON-Daten unbekannten Formats erfolgreich in GoLang-Strukturen entmarshalieren. Mit diesem Ansatz können Sie elegant mit dynamischen und unbekannten JSON-Strukturen umgehen.
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