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)
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