Memelihara Jenis Rentetan Apabila Menghuraikan JSON dalam Python 2
Menghuraikan JSON dalam Python 2 kadangkala boleh mengakibatkan nilai rentetan dihantar ke objek Unicode. Ini boleh menimbulkan cabaran apabila antara muka dengan perpustakaan yang memerlukan objek rentetan secara eksklusif.
Penukaran JSON kepada Objek Unikod
Apabila menggunakan JSON atau simplejson untuk memuatkan fail teks berkod ASCII dalam Python 2, anda mungkin menghadapi masalah di mana nilai rentetan ditukar kepada objek Unicode. Ini dijelaskan oleh mekanisme pengekodan lalai Python 2, yang menganggap Unicode untuk teks.
Pilihan Penghuraian Alternatif: PyYAML
Untuk menyelesaikan isu ini, pertimbangkan untuk menggunakan PyYAML untuk menghuraikan JSON fail. PyYAML merawat kunci dan nilai sebagai objek rentetan secara lalai, menyediakan penyelesaian mudah untuk mengekalkan jenis rentetan.
Contoh
<code class="python">import yaml list_dump = json.dumps(['a', 'b']) yaml.safe_load(list_dump) # Returns string objects: ['a', 'b']</code>
Nota:
Fungsi Penukaran
Jika PyYAML bukan pilihan atau anda perlu bekerja dengan Unicode, fungsi penukaran seperti yang dicadangkan oleh Mark Amery boleh digunakan.
Contoh
<code class="python">def convert_to_str(data): """Convert Unicode values to strings.""" if isinstance(data, dict): return {convert_to_str(k): convert_to_str(v) for k, v in data.items()} elif isinstance(data, list): return [convert_to_str(v) for v in data] elif isinstance(data, unicode): return data.encode('utf-8') else: return data</code>
Dengan menggunakan fungsi ini sebagai cangkuk_objek semasa pemuatan JSON, nilai Unikod akan ditukar kepada rentetan.
Atas ialah kandungan terperinci Bagaimana untuk Mengekalkan Jenis Rentetan Apabila Menghuraikan JSON dalam Python 2?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!