Maison > Article > développement back-end > Comment obtenir des objets chaîne au lieu d'Unicode à partir de JSON dans Python 2 ?
Lors de l'analyse de JSON à partir de fichiers texte codés en ASCII dans Python 2, le comportement par défaut est de représenter une chaîne valeurs en tant qu’objets Unicode. Cela peut poser un problème lorsque vous travaillez avec des bibliothèques qui n'acceptent que des objets chaîne.
Heureusement, il existe plusieurs façons d'obtenir des objets chaîne au lieu d'objets Unicode :
PyYAML est une bibliothèque Python permettant d'analyser YAML, qui est un surensemble de JSON. Il fournit un moyen pratique d'obtenir des objets chaîne tout en préservant la structure JSON :
<code class="python">import yaml json_string = '["a", "b"]' data = yaml.safe_load(json_string) # Returns a list of strings</code>
Remarque : Cette méthode ne fonctionne que pour les données codées en ASCII.
Si les données sont codées en Unicode, vous pouvez utiliser une fonction de conversion pour convertir les chaînes Unicode en chaînes normales :
<code class="python">def unicode_to_string(obj): if isinstance(obj, basestring): return obj.encode('utf-8') elif isinstance(obj, dict): return dict((unicode_to_string(k), unicode_to_string(v)) for k, v in obj.iteritems()) elif isinstance(obj, list): return [unicode_to_string(v) for v in obj] else: return obj # Usage: json_string = '["\u00e1", "\u00e9"]' data = json.loads(json_string) converted_data = unicode_to_string(data) # Converts Unicode strings to strings</code>
Vous pouvez également utiliser un hook d'objet pour convertir les chaînes Unicode en chaînes lors de la sérialisation :
<code class="python">import json def object_hook(obj): if isinstance(obj, unicode): return obj.encode('utf-8') return obj # Usage: json_string = '["a", "b"]' data = json.loads(json_string, object_hook=object_hook) # Converts Unicode strings to strings during deserialization</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!