Heim >Backend-Entwicklung >Golang >Probleme beim Sortieren von JSON-Schlüsseln beim Marshallen bestellter Karten in Golang

Probleme beim Sortieren von JSON-Schlüsseln beim Marshallen bestellter Karten in Golang

WBOY
WBOYnach vorne
2024-02-09 10:00:28747Durchsuche

在 Golang 中编组有序映射时排序 JSON 键的问题

Das Sortieren von JSON-Schlüsseln ist ein häufiges Problem beim Marshallen bestellter Karten in Golang. Wenn wir Daten aus einer Datenbank oder einer anderen Datenquelle abrufen und im JSON-Format bereitstellen, müssen wir häufig die Schlüssel sortieren, um sicherzustellen, dass das ausgegebene JSON-Objekt eine konsistente Schlüsselreihenfolge aufweist. Die Implementierung dieser Funktion in Golang ist nicht kompliziert. Wir können eine Kombination aus Strukturen und Slices verwenden, um die Funktion zum Sortieren von Schlüsseln zu implementieren. Wir können das Ziel der Sortierung von JSON-Schlüsseln leicht erreichen, indem wir die Schlüssel-Wert-Paare in einem Slice einer Struktur speichern und das Sortierpaket zum Sortieren der Slices verwenden. In diesem Artikel erklären wir, wie JSON-Schlüssel beim Marshallen einer geordneten Karte in Golang sortiert werden, und stellen einen einfachen Beispielcode zur Verfügung, um den Vorgang zu demonstrieren.

Frageninhalt

Ich muss über ein bestimmtes JSON-Fragment iterieren und das Array enthält einzelne Elemente, um es in eine Karte umzuwandeln. Dies ist einfach zu bewerkstelligen.

Das Problem ist, dass ich einen Teil von JSON in der Reihenfolge, in der er gerendert wurde, an den Client zurückgeben muss.

Ich habe einige Anleitungen zur Verwendung von OrderedMap gefunden, aber sie scheinen mir nicht konsistent zu sein.

Manchmal erledige ich die Bestellung richtig, manchmal nicht.

https://go.dev/play/p/b9hmS9BEymy

Kann jemand einen Rat geben? Der Protokollierung nach zu urteilen, liegt das Problem möglicherweise im Unmarshaling des eingehenden JSON

Ich scheue wirklich davor zurück, Strukturen zu verwenden, weil das echte JSON, mit dem ich mich befassen muss, sehr komplex ist und viel Arbeit erfordert, da es so viele Variationen gibt.

Problemumgehung

Beim Unmarshaling des JSON wird die Reihenfolge nicht eingehalten, da Sie die Funktion map[string]interface{}。 golang 中的 Map 是一个 hashmap,所以这并不奇怪。您应该做的是创建一个 UnmarshalJSON verwenden und ein benutzerdefiniertes Unmarshaling durchführen, andernfalls kann die Reihenfolge nicht beibehalten werden.

Sie können das Standard-Unmarshalling für alle anderen Typen außer Karten verwenden, was es einfacher machen dürfte. Wenn Sie Einzelheiten dazu wünschen, kann ich Ihnen das auch erklären

Das obige ist der detaillierte Inhalt vonProbleme beim Sortieren von JSON-Schlüsseln beim Marshallen bestellter Karten in Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen