Heim >Backend-Entwicklung >Golang >Wie kann ich beim Marshalling in Go sortierte JSON-Schlüssel erreichen?
JSON-Marshalling in Go mit sortierten Schlüsseln
In Python ist das Erstellen von JSON mit Schlüsseln in sortierter Reihenfolge so einfach wie das Setzen des Parameters sort_keys auf WAHR. Aber was ist mit Go? Diese Frage untersucht Möglichkeiten, um ein ähnliches Verhalten in Golang zu erreichen.
Gos Schlüsselreihenfolge-Ansatz
Im Gegensatz zu Python ordnet das JSON-Paket von Go die Schlüssel von Natur aus während des Marshallings. Die spezifischen Ordnungsregeln lauten wie folgt:
Diese automatische Schlüsselreihenfolge bedeutet, dass Entwickler nicht wie in Python explizit einen sort_keys-Parameter angeben müssen. Die Reihenfolge der Schlüssel wird durch die internen Sortieralgorithmen von Go bestimmt.
Unter der Haube
Die Implementierung der Schlüsselreihenfolge finden Sie in binding/json/encode.go , insbesondere ab Zeile 359. Hier iteriert der Encoder über die Schlüssel der Karte oder Struktur und sortiert sie, bevor er den JSON serialisiert.
Beispiel
Betrachten Sie den folgenden Go-Code:
package main import "encoding/json" type MyStruct struct { Field1 string Field2 int } func main() { data := map[string]int{"apple": 1, "banana": 3, "cherry": 2} jsonData, _ := json.Marshal(data) fmt.Println(string(jsonData)) }
Die Ausgabe dieses Codes wird sein:
{ "apple": 1, "banana": 3, "cherry": 2 }
Wie Sie sehen können, ist die Schlüssel werden automatisch lexikografisch sortiert, ohne dass eine zusätzliche Konfiguration erforderlich ist.
Das obige ist der detaillierte Inhalt vonWie kann ich beim Marshalling in Go sortierte JSON-Schlüssel erreichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!