exemple de code:
>>> import json
>>> json_stringv json.dumps("ברי צקלה")
>>> print json_string
"\u05d1\u05e8\u05d9 \u05e6\u05e7\u05dc\u05d4"
Le problème: il n'est pas lisible par l'homme. Mon (smart), les utilisateurs souhaitent vérifier ou modifier des fichiers texte avec JSON décharges. (et je préfère ne pas utiliser le XML)
Est-il possible de sérialiser des objets en utf-8 chaîne json (au lieu de \uXXXX ) ?
ce n'aide pas:
>>> output = json_string.decode('string-escape')
"\u05d1\u05e8\u05d9 \u05e6\u05e7\u05dc\u05d4"
cela fonctionne, mais si tous les sous-objets est un python unicode et pas en utf-8, il va de vidage de la poubelle:
>>> #### ok:
>>> s= json.dumps( "ברי צקלה", ensure_ascii=False)
>>> print json.loads(s)
ברי צקלה
>>> #### NOT ok:
>>> d={ 1: "ברי צקלה", 2: u"ברי צקלה" }
>>> print d
{1: '\xd7\x91\xd7\xa8\xd7\x99 \xd7\xa6\xd7\xa7\xd7\x9c\xd7\x94',
2: u'\xd7\x91\xd7\xa8\xd7\x99 \xd7\xa6\xd7\xa7\xd7\x9c\xd7\x94'}
>>> s = json.dumps( d, ensure_ascii=False, encoding='utf8')
>>> print json.loads(s)['1']
ברי צקלה
>>> print json.loads(s)['2']
××¨× ×¦×§××
j'ai cherché sur le json.les vidages de documentation, mais ne pouvait pas trouver quelque chose d'utile.
Edit - Solution(?):
je vais essayer de résumer les commentaires et les réponses par Martijn Pieters:
(edit: 2ème pensée après @Sébastien commentaire et environ un an plus tard)
il y a
peut-être pasest une solution intégrée en json.décharges.je vais devoir convertir toutes les chaînes à
UTF8Unicode l'objet avant d'être JSON-ed. je vais utiliser la Marque, la fonction qui convertit les chaînes recuresively dans un objet imbriquél'exemple que j'ai donné, dépend beaucoup trop sur mon ordinateur & environnement IDE, et n'exécute pas les mêmes sur tous les ordinateurs.
Merci tout le monde :)