Je suis en train de lire json à partir d’un fichier sur un serveur distant en utilisant fabric:
from StringIO import StringIO
output = StringIO()
get(file_name, output)
output = output.getvalue()
La valeur de output
est maintenant:
""{\n \"status\": \"failed\", \n \"reason\": \"Record already
exists.\"\n}""
Quand j'essaye d'analyser cette chaîne dans un dictionnaire en utilisant json.loads(output)
son retourne l'objet unicode u"{n "status": "failed", n "reason": "Record already exists."n}"
plutôt qu'un dictionnaire.
J'ai trouvé un correctif assez mauvais, renvoyant simplement le nouvel objet unicode dans json.loads ():
json.loads(json.loads(output))
Y a-t-il une autre solution à cela?
À votre santé
Réponses:
16 pour la réponse № 1Vos données sont échappées.
json.loads(output.decode("string-escape").strip("""))
devrait vous donner les résultats souhaités:
Out[12]: {"reason": "Record already exists.", "status": "failed"}
13 pour la réponse № 2
La solution ici serait de comprendre pourquoi votre fichier est doublement encodé en JSON, mais étant donné que les données le transmettant json.loads
deux fois est la bonne approche.