Préserver les types de chaînes lors de l'analyse de JSON dans Python 2
L'analyse de JSON dans Python 2 peut parfois entraîner la conversion de valeurs de chaîne en objets Unicode. Cela peut poser des problèmes lors de l'interface avec des bibliothèques qui nécessitent exclusivement des objets chaîne.
Conversion JSON en objets Unicode
Lors de l'utilisation de JSON ou simplejson pour charger des fichiers texte codés en ASCII dans Python 2, vous pouvez rencontrer le problème où les valeurs de chaîne sont converties en objets Unicode. Ceci s'explique par le mécanisme d'encodage par défaut de Python 2, qui suppose Unicode pour le texte.
Option d'analyse alternative : PyYAML
Pour résoudre ce problème, envisagez d'utiliser PyYAML pour analyser JSON. fichiers. PyYAML traite les clés et les valeurs comme des objets chaîne par défaut, fournissant une solution simple pour préserver les types de chaînes.
Exemple
<code class="python">import yaml list_dump = json.dumps(['a', 'b']) yaml.safe_load(list_dump) # Returns string objects: ['a', 'b']</code>
Remarques :
Fonction de conversion
Si PyYAML n'est pas une option ou si vous devez travailler avec Unicode, une fonction de conversion telle que celle proposée par Mark Amery peut être utilisé.
Exemple
<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>
En utilisant cette fonction comme object_hook lors du chargement JSON, les valeurs Unicode seront converties en chaînes.
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!