Heim >Backend-Entwicklung >Python-Tutorial >Wie können Sie die Reihenfolge der Schlüssel in JSON-Objekten steuern, wenn Sie Python-Wörterbücher mit „json.dumps' konvertieren?

Wie können Sie die Reihenfolge der Schlüssel in JSON-Objekten steuern, wenn Sie Python-Wörterbücher mit „json.dumps' konvertieren?

Barbara Streisand
Barbara StreisandOriginal
2024-10-29 21:17:30962Durchsuche

How can you control the order of keys in JSON objects when converting Python dictionaries using `json.dumps`?

Elemente in JSON-Objekten mit „json.dumps“ neu anordnen

Das Problem ungeordneter Schlüssel in JSON-Objekten tritt auf, wenn die Funktion „json.dumps“ zum Konvertieren von Python verwendet wird Wörterbücher in das JSON-Format umwandeln, was zu unerwarteten Reihenfolgen führt. Dies liegt daran, dass sowohl Python-Wörterbücher als auch JSON-Objekte keine inhärente Reihenfolge haben.

Um dieses Problem zu beheben, kann der Parameter „sort_keys“ in „json.dumps“ verwendet werden, um die Schlüssel in aufsteigender alphabetischer Reihenfolge zu sortieren. Hier ist ein Beispiel:

<code class="python">import json

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

print(json.dumps(countries, sort_keys=True))</code>

Dies erzeugt die gewünschte Ausgabe mit sortierten Schlüsseln:

<code class="json">[
  {"id": 1, "name": "Mauritius", "timezone": 4},
  {"id": 2, "name": "France", "timezone": 2},
  {"id": 3, "name": "England", "timezone": 1},
  {"id": 4, "name": "USA", "timezone": -4}
]</code>

Eine weitere Option besteht darin, die Klasse „collections.OrderedDict“ zu verwenden, die die Reihenfolge der Schlüssel beibehält. Wertepaare. Hier ist ein Beispiel:

<code class="python">from collections import OrderedDict

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

print(json.dumps(countries))</code>

Dies führt auch zu einer geordneten JSON-Ausgabe:

<code class="json">{"id": 1, "name": "Mauritius", "timezone": 4}</code>

Seit Python 3.6 wird die Reihenfolge der Schlüsselwortargumente standardmäßig beibehalten, was eine effizientere Möglichkeit bietet Erzielen Sie die gewünschte Reihenfolge:

<code class="python">countries = {
    "id": 1,
    "name": "Mauritius",
    "timezone": 4
}

print(json.dumps(countries))</code>

Wenn Ihre Eingabe schließlich als JSON bereitgestellt wird, kann das Argument „object_pairs_hook“ in „json.loads“ verwendet werden, um die Reihenfolge als „OrderedDict“ beizubehalten:

<code class="python">json_input = '{"a": 1, "b": 2}'

ordered_dict = json.loads(json_input, object_pairs_hook=OrderedDict)
print(ordered_dict)</code>

Dadurch wird sichergestellt, dass die Schlüssel-Wert-Paare in der ursprünglichen Reihenfolge bleiben, in der sie in der JSON-Eingabe bereitgestellt wurden.

Das obige ist der detaillierte Inhalt vonWie können Sie die Reihenfolge der Schlüssel in JSON-Objekten steuern, wenn Sie Python-Wörterbücher mit „json.dumps' konvertieren?. 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