使用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