Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapakah susunan kunci dalam output JSON saya berbeza daripada susunan dalam kamus Python saya menggunakan `json.dumps`?
Item Luar Pesanan dalam Objek JSON dengan "json.dumps"?
Dalam kod anda, anda menggunakan "json .dumps" untuk menukar senarai kamus kepada JSON. Walau bagaimanapun, anda perasan bahawa susunan kunci dalam setiap kamus tidak seperti yang diharapkan. Khususnya, anda memerlukan kunci untuk muncul dalam susunan "id", "nama" dan "zon waktu".
Penaakulan
Kedua-dua kamus Python (sebelum Python 3.7) dan objek JSON ialah koleksi tidak tertib. Ini bermakna susunan kekunci dalam kamus atau objek JSON tidak dijamin.
Penyelesaian 1: Isih Kunci
Anda boleh menggunakan parameter "sort_keys" bagi "json.dumps" untuk mengisih kekunci dalam output JSON. Contohnya:
<code class="python">import json countries.append({"id":row.id,"name":row.name,"timezone":row.timezone}) print(json.dumps(countries, sort_keys=True))</code>
Ini akan mengeluarkan JSON dengan kekunci dalam susunan berikut:
[ {"id": 1, "name": "Mauritius", "timezone": 4}, {"id": 2, "name": "France", "timezone": 2}, {"id": 3, "name": "England", "timezone": 1}, {"id": 4, "name": "USA", "timezone": -4} ]
Penyelesaian 2: Menggunakan OrderedDict
Jika anda memerlukan susunan khusus untuk kunci, anda boleh menggunakan kelas "collections.OrdedDict". OrderedDict mengekalkan susunan kekunci yang dimasukkan ke dalamnya. Contohnya:
<code class="python">from collections import OrderedDict countries_by_id = OrderedDict() countries_by_id["id"] = row.id countries_by_id["name"] = row.name countries_by_id["timezone"] = row.timezone print(json.dumps(countries_by_id))</code>
Ini akan mengeluarkan JSON dengan kekunci dalam susunan "id", "nama" dan "zon waktu".
Nota Tambahan
Dalam Python 3.6 dan lebih baru, susunan hujah kata kunci disimpan dalam kamus. Ini bermakna anda boleh mencapai hasil yang sama seperti menggunakan OrderedDict dengan hanya menyatakan kekunci dalam susunan yang diingini semasa mencipta kamus:
<code class="python">countries = {"id": row.id, "name": row.name, "timezone": row.timezone}</code>
Ini akan mengekalkan susunan kunci dalam output JSON secara automatik.
Atas ialah kandungan terperinci Mengapakah susunan kunci dalam output JSON saya berbeza daripada susunan dalam kamus Python saya menggunakan `json.dumps`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!