我有一些简单的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吗?
答案 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>)