Mengapakah susunan kunci dalam output JSON saya berbeza daripada susunan dalam kamus Python saya menggunakan `json.dumps`?

Mary-Kate Olsen
Lepaskan: 2024-10-27 21:08:01
asal
779 orang telah melayarinya

Why is the order of keys in my JSON output different from the order in my Python dictionary using `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>
Salin selepas log masuk

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}
]
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!