我有一个使用repr函数保存到文件的JSON对象:
f = open('file', 'w')
f.write(repr(my_json))
f.close()
编码的JSON现在具有领先优势' u'表示unicode编码的字符。
{u'messages': 'messages'}
这是预期的Python 2.x行为,但现在我试图弄清楚如何解码存储在该文件中的字符串。我尝试的一切都给了我同样的错误:
ValueError: Expecting property name: line 1 column 2 (char 1)
帮助?
答案 0 :(得分:1)
假设写入文件的数据是json(able),这也意味着它的表示应该是python文字。所以......您可以尝试使用ast.literal_eval
“解码”它。
e.g。
import ast
with open('file', 'r') as datafile:
literal_data = datafile.read()
json_data_decoded = ast.literal_eval(literal_data)
演示ast.literal_eval
使用u
前缀:
>>> repr(data)
"{u'foo': u'bar'}"
>>> ast.literal_eval(repr(data))
{u'foo': u'bar'}
>>> ast.literal_eval(repr(data))['foo']
u'bar'
注意,可能有一些python版本(3.0, 3.1 and 3.2),但这不起作用。对于那些版本,我真的没有一个好的解决方法 - 希望你不需要支持它们。