使用json.dumps
到Python字典转换为字符串,不str
。然后,你可以期望json.loads
工作:
错误:
>>> D = {u"favorited": False, u"contributors": None}
>>> s = str(D)
>>> s
"{u'favorited': False, u'contributors': None}"
>>> json.loads(s)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "D:\dev\Python27\lib\json\__init__.py", line 339, in loads
return _default_decoder.decode(s)
File "D:\dev\Python27\lib\json\decoder.py", line 364, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "D:\dev\Python27\lib\json\decoder.py", line 380, in raw_decode
obj, end = self.scan_once(s, idx)
ValueError: Expecting property name: line 1 column 2 (char 1)
正确:
>>> D = {u"favorited": False, u"contributors": None}
>>> s = json.dumps(D)
>>> s
'{"favorited": false, "contributors": null}'
>>> json.loads(s)
{u'favorited': False, u'contributors': None}
'u'前缀字符串不属于JSON规范。你为什么要'json.loads'接受它(或者你的真实*问题是什么)? –
我得到这些类型的字符串,通过类型铸造一个字典,表示一个JSON字符串'str(json_dict)'。 –
你使用什么版本的Python?如果这是Python3.x,它将不适合你,因为在Python3.x中不再有像'unicode'这样的东西。 – PatNowak