我正在使用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))
有没有办法解决这个问题呢?
干杯
您的数据已转义.
json.loads(output.decode('string-escape').strip('"'))
应该给你想要的结果:
Out[12]: {'reason': 'Record already exists.', 'status': 'failed'}
这里的解决方案是弄清楚为什么你的文件首先是双重JSON编码,但考虑到传递json.loads
两次的数据是正确的方法.