如何在Python中加载unicode json?

时间:2014-02-04 21:24:55

标签: python json unicode

我有一些简单的json格式化为unicode,我想用常用的python json.loads()加载:

>>> er.rates
u"{u'sell': u'1.3477', u'buy': u'1.3588'}"
>>> json.loads(er.rates)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 338, in loads
    return _default_decoder.decode(s)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 365, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 381, in raw_decode
    obj, end = self.scan_once(s, idx)
ValueError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)

所以我尝试使用ensure_ascii=False

>>> json.loads(er.rates, ensure_ascii=False)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 351, in loads
    return cls(encoding=encoding, **kw).decode(s)
TypeError: __init__() got an unexpected keyword argument 'ensure_ascii'

有人知道如何加载这个unicode json吗?

2 个答案:

答案 0 :(得分:4)

那不是json。它是python dict的字符串表示,这是完全不同的。

您可以使用ast.literal_eval加载它。

答案 1 :(得分:0)

许多API数据提供程序返回unicode字符串,可以在浏览器中轻松呈现。 Unicode字符串(即使它看起来像json)和json在计算机上也不是同一个字符串&#39;透视图。

如果你有一个unicode(json-like)字符串,你应该可以使用json.loads(<your unicode json like string>)