Heim > Backend-Entwicklung > Python-Tutorial > Wie bleiben String-Typen beim Parsen von JSON in Python 2 erhalten?

Wie bleiben String-Typen beim Parsen von JSON in Python 2 erhalten?

Mary-Kate Olsen
Freigeben: 2024-11-03 00:38:29
Original
810 Leute haben es durchsucht

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

Beibehalten von String-Typen beim Parsen von JSON in Python 2

Das Parsen von JSON in Python 2 kann manchmal dazu führen, dass String-Werte in Unicode-Objekte umgewandelt werden. Dies kann bei der Verbindung mit Bibliotheken, die ausschließlich String-Objekte erfordern, zu Herausforderungen führen.

JSON-Konvertierung in Unicode-Objekte

Bei Verwendung von JSON oder simplejson zum Laden von ASCII-codierten Textdateien Bei Python 2 kann das Problem auftreten, dass Zeichenfolgenwerte in Unicode-Objekte konvertiert werden. Dies wird durch den Standardkodierungsmechanismus von Python 2 erklärt, der Unicode für Text voraussetzt.

Alternative Parsing-Option: PyYAML

Um dieses Problem zu beheben, sollten Sie die Verwendung von PyYAML zum Parsen von JSON in Betracht ziehen Dateien. PyYAML behandelt Schlüssel und Werte standardmäßig als String-Objekte und bietet so eine einfache Lösung zum Beibehalten von String-Typen.

Beispiel

<code class="python">import yaml
list_dump = json.dumps(['a', 'b'])
yaml.safe_load(list_dump)  # Returns string objects: ['a', 'b']</code>
Nach dem Login kopieren

Hinweise:

  • PyYAMLs Funktion „safe_load“ wird für das JSON-Parsen empfohlen.
  • Unicode-Zeichen bleiben weiterhin in den String-Objekten erhalten.
  • Ruamel YAML ist ein alternativer YAML-Parser mit mehr erweiterte Funktionen.

Konvertierungsfunktion

Wenn PyYAML keine Option ist oder Sie mit Unicode arbeiten müssen, eine Konvertierungsfunktion wie die von Mark vorgeschlagene Amery kann verwendet werden.

Beispiel

<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>
Nach dem Login kopieren

Durch die Verwendung dieser Funktion als object_hook während des JSON-Ladens werden Unicode-Werte in Zeichenfolgen konvertiert.

Das obige ist der detaillierte Inhalt vonWie bleiben String-Typen beim Parsen von JSON in Python 2 erhalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage