Umgang mit JSON mit unbekannter Struktur: Unmarshaling und Änderung
In vielen Programmierszenarien kann der Umgang mit JSON-Daten mit unbekannter Struktur eine Herausforderung sein. Go bietet jedoch eine Lösung, um dieses Hindernis zu überwinden.
Stellen Sie sich eine Situation vor, in der Sie eine JSON-Zeichenfolge wie diese erhalten:
{ "votes": { "option_A": "3" } }
Ihr Ziel ist es, einen neuen „count“-Schlüssel mit hinzuzufügen einen Wert von „1“ für das JSON-Objekt. Da die JSON-Struktur jedoch unvorhersehbar ist, können Sie die Standardfunktion json.Unmarshal nicht mit einer vordefinierten Struktur verwenden.
Um dieser Herausforderung zu begegnen, können Sie den Typ „map[string]interface{}“ verwenden. Dadurch können Sie JSON in eine generische Karte entmarshalieren, in der Schlüssel Zeichenfolgen und Werte Schnittstellen sind, die jede Art von Daten darstellen können.
Der Code zeigt, wie dies erreicht wird:
package main import ( "encoding/json" "fmt" ) func main() { in := []byte(`{ "votes": { "option_A": "3" } }`) var raw map[string]interface{} if err := json.Unmarshal(in, &raw); err != nil { panic(err) } raw["count"] = 1 out, err := json.Marshal(raw) if err != nil { panic(err) } fmt.Println(string(out)) }
In diesem Code entpacken wir die JSON-Daten in die Rohkarte. Da die Struktur unbekannt ist, werden die Werte als Schnittstellen dargestellt.
Wir können die Karte dann ändern, indem wir ein neues Schlüssel-Wert-Paar mit „count“ als Schlüssel und 1 als Wert hinzufügen. Schließlich Marshallen wir die geänderte Karte mit json.Marshal zurück in einen JSON-String.
Die Ausgabe wird wie erwartet sein:
{"votes":{"option_A":"3"},"count":1}
Diese Technik bietet eine flexible Möglichkeit, mit JSON-Daten umzugehen unbekannte Strukturen, sodass Sie die Daten nach Bedarf ändern und anreichern können.
Das obige ist der detaillierte Inhalt vonWie kann ich ein JSON-Objekt mit einer unbekannten Struktur in Go ändern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!