我正在使用fabric在远程服务器上的文件中读取json:
from StringIO import StringIO
output = StringIO()
get(file_name, output)
output = output.getvalue()
output
的价值现在是:
'"{\\n \\"status\\": \\"failed\\", \\n \\"reason\\": \\"Record already
exists.\\"\\n}"'
当我尝试使用json.loads(output)
将此字符串解析为字典时,它返回unicode对象u'{\n "status": "failed", \n "reason": "Record already exists."\n}'
而不是字典。
我提出了一个相当糟糕的修复方法,只需将新的unicode对象传回json.loads():
json.loads(json.loads(output))
有没有办法解决这个问题?
干杯
答案 0 :(得分:17)
您的数据已转义。
json.loads(output.decode('string-escape').strip('"'))
应该给你想要的结果:
Out[12]: {'reason': 'Record already exists.', 'status': 'failed'}
答案 1 :(得分:14)
这里的解决方案是弄清楚为什么你的文件首先是双重JSON编码,但是假设通过json.loads
两次的数据是正确的方法。