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
Lepaskan: 2024-11-03 00:38:29
asal
810 orang telah melayarinya

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

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

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!

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