„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie steuere ich die JSON-Schlüsselreihenfolge mit Pythons „json.dumps“?

Wie steuere ich die JSON-Schlüsselreihenfolge mit Pythons „json.dumps“?

Veröffentlicht am 08.11.2024
Durchsuche:683

 How to Control JSON Key Order with Python\'s `json.dumps`?

Inkonsistenzen der JSON-Schlüsselreihenfolge bei Verwendung von „json.dumps“

In Python erfordert die JSON-Konvertierung häufig die Verwendung von „json.dumps“ zur Transformation Wörterbücher in JSON-Objekte. Benutzer können jedoch auf Inkonsistenzen in der resultierenden JSON-Schlüsselreihenfolge stoßen, da die erwartete Reihenfolge (ID, Name, Zeitzone) von der tatsächlichen Ausgabe (Zeitzone, ID, Name) abweicht.

Um dieses Problem zu beheben und die zu erzwingen Für die gewünschte Tastenreihenfolge stehen zwei Vorgehensweisen zur Verfügung:

1. Verwendung des Parameters „sort_keys“:

Der Parameter „sort_keys“ sortiert die JSON-Schlüssel alphabetisch, wenn er auf „True“ gesetzt ist. Beispielsweise würde der folgende Codeausschnitt die gewünschte Schlüsselreihenfolge ergeben:

import json

countries = []
countries.append({"id": 1, "name": "Mauritius", "timezone": 4})
countries.append({"id": 2, "name": "France", "timezone": 2})
countries.append({"id": 3, "name": "England", "timezone": 1})
countries.append({"id": 4, "name": "USA", "timezone": -4})

json_data = json.dumps(countries, sort_keys=True)
print(json_data)

2. Durch die Verwendung von OrderedDict:

Pythons „collections.OrderedDict“ wird die Schlüsseleinfügereihenfolge beibehalten. Durch die Verwendung von OrderedDict kann die erwartete Schlüsselreihenfolge erreicht werden:

from collections import OrderedDict

countries = OrderedDict()
countries["id"] = 1
countries["name"] = "Mauritius"
countries["timezone"] = 4

json_data = json.dumps(countries)
print(json_data)

In Python 3.6 und höher wird die Reihenfolge der Schlüsselwortargumente standardmäßig beibehalten, was eine prägnantere Syntax ermöglicht:

json_data = json.dumps(OrderedDict(id=1, name="Mauritius", timezone=4))
print(json_data)

Zuletzt kann für die JSON-Eingabe der Parameter „object_pair_hook“ verwendet werden, um die Objektreihenfolge beizubehalten und einen OrderedDict:

import json

json_data = json.loads('{"id": 1, "name": "Mauritius", "timezone": 4}', object_pairs_hook=OrderedDict)
print(json_data)
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3