Heim >Backend-Entwicklung >Python-Tutorial >Kann JSON in ein OrderedDict geladen werden, um die Schlüsselreihenfolge beizubehalten?

Kann JSON in ein OrderedDict geladen werden, um die Schlüsselreihenfolge beizubehalten?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-06 22:19:12801Durchsuche

Can JSON be Loaded into an OrderedDict to Preserve Key Order?

JSON in ein OrderedDict laden

In JSON werden Daten in Schlüssel-Wert-Paaren gespeichert. Die Reihenfolge dieser Paare ist nicht garantiert. In bestimmten Szenarien ist es jedoch entscheidend, die Reihenfolge der Schlüssel beizubehalten. Es stellt sich die Frage: Kann JSON in ein geordnetes Wörterbuch (OrderedDict) geladen werden?

Lösung mit object_pairs_hook

Ja, JSON kann in ein OrderedDict geladen werden. Dies wird durch die Angabe des Arguments object_pairs_hook für den JSONDecoder-Konstruktor erreicht. Das Argument object_pairs_hook übernimmt eine Funktion, die für jedes Paar von Schlüsseln und Werten im JSON-Objekt aufgerufen wird. Diese Funktion kann ein geordnetes Wörterbuch zurückgeben und dabei sicherstellen, dass die Reihenfolge der Schlüssel erhalten bleibt. Unten ist ein Beispiel:

import json
from collections import OrderedDict

data = json.loads('{"foo":1, "bar": 2}', object_pairs_hook=OrderedDict)
print(json.dumps(data, indent=4))

Ausgabe:

{
    "foo": 1,
    "bar": 2
}

Dies funktioniert, weil die Funktion object_pairs_hook ein OrderedDict-Objekt zurückgibt, das die Reihenfolge der Schlüssel beibehält.

Alternative mit json.load

Der gleiche Ansatz kann auf die angewendet werden json.load-Funktion:

data = json.load(open('config.json'), object_pairs_hook=OrderedDict)

Das obige ist der detaillierte Inhalt vonKann JSON in ein OrderedDict geladen werden, um die Schlüsselreihenfolge beizubehalten?. 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