如何在Python中解码unicode编码的JSON对象

时间:2015-01-22 00:39:13

标签: python json

我有一个使用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)

帮助?

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),但这不起作用。对于那些版本,我真的没有一个好的解决方法 - 希望你不需要支持它们。