Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Mengekalkan Jenis Rentetan Apabila Menghuraikan JSON dalam Python 2?

Bagaimana untuk Mengekalkan Jenis Rentetan Apabila Menghuraikan JSON dalam Python 2?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-03 00:38:29833semak imbas

How to Preserve String Types When Parsing JSON in Python 2?

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 safe_load PyYAML disyorkan untuk penghuraian JSON.
  • Aksara Unikod masih akan dikekalkan dalam objek rentetan.
  • Ruamel YAML ialah penghurai YAML alternatif dengan lebih banyak ciri lanjutan.

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!

Kenyataan:
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