如果遇到一個json字符串,裏頭的key或value是單引號包圍,直接用json.loads就會報錯,如下:
import json
json_str = "{'name':'like','age',27'}"
json.loads(json_str)
運行後報錯:
Traceback (most recent call last):
File "E:\workspace\NegativeMonitor\NegativeMonitor\DownloadVideo\test_youtube.py", line 21, in <module>
json.loads(video)
File "E:\Anaconda3\lib\json\__init__.py", line 354, in loads
return _default_decoder.decode(s)
File "E:\Anaconda3\lib\json\decoder.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "E:\Anaconda3\lib\json\decoder.py", line 355, in raw_decode
obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
解決辦法:
json_str = "{'name':'like','age',27'}"
json.loads(json.dumps(eval(json_str )))