Heim >Backend-Entwicklung >Golang >Wie kann ich beim Marshalling in Go sortierte JSON-Schlüssel erreichen?

Wie kann ich beim Marshalling in Go sortierte JSON-Schlüssel erreichen?

DDD
DDDOriginal
2024-12-09 09:54:08798Durchsuche

How Can I Achieve Sorted JSON Keys When Marshalling in Go?

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:

  • Schlüssel in Karten werden lexikografisch sortiert.
  • Schlüssel in Strukturen werden in der Reihenfolge geordnet, in der sie in der Struktur definiert sind.

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn