Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah anda boleh mengawal susunan kunci dalam objek JSON apabila menukar kamus Python menggunakan `json.dumps`?
Isu kekunci tidak tertib dalam objek JSON timbul apabila menggunakan fungsi "json.dumps" untuk menukar Python kamus kepada format JSON, yang membawa kepada pesanan yang tidak dijangka. Ini berlaku kerana kedua-dua kamus Python dan objek JSON tidak mempunyai susunan yang wujud.
Untuk menangani perkara ini, parameter "sort_keys" boleh digunakan dalam "json.dumps" untuk mengisih kekunci dalam susunan abjad menaik. Berikut ialah contoh:
<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>
Ini menghasilkan output yang diingini dengan kekunci diisih:
<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>
Pilihan lain melibatkan penggunaan kelas "collections.OrderedDict", yang mengekalkan susunan kunci- pasangan nilai. Berikut ialah contoh:
<code class="python">from collections import OrderedDict countries = OrderedDict([ ("id", 1), ("name", "Mauritius"), ("timezone", 4) ]) print(json.dumps(countries))</code>
Ini juga menghasilkan output JSON yang tersusun:
<code class="json">{"id": 1, "name": "Mauritius", "timezone": 4}</code>
Sejak Python 3.6, susunan hujah kata kunci dipelihara secara lalai, menyediakan cara yang lebih diperkemas untuk mencapai susunan yang diingini:
<code class="python">countries = { "id": 1, "name": "Mauritius", "timezone": 4 } print(json.dumps(countries))</code>
Akhir sekali, jika input anda diberikan sebagai JSON, hujah "object_pairs_hook" boleh digunakan dalam "json.loads" untuk mengekalkan susunan sebagai "OrderedDict":
<code class="python">json_input = '{"a": 1, "b": 2}' ordered_dict = json.loads(json_input, object_pairs_hook=OrderedDict) print(ordered_dict)</code>
Ini memastikan pasangan nilai kunci kekal dalam susunan asal yang diberikan dalam input JSON.
Atas ialah kandungan terperinci Bagaimanakah anda boleh mengawal susunan kunci dalam objek JSON apabila menukar kamus Python menggunakan `json.dumps`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!