gab*_*abe 26 python twitter json
我试图将JSON对象解析为Python dict
.我以前从未这样做过.当我搜索这个特定错误时,(第一个char有什么问题?),其他帖子说加载的字符串实际上不是JSON字符串.不过,我很确定这是.
在这种情况下,eval()
工作正常,但我想知道是否有更合适的方式?
注意:此字符串直接来自Twitter,通过ptt工具.
>>> import json
>>> line = '{u\'follow_request_sent\': False, u\'profile_use_background_image\': True,
u\'default_profile_image\': False,
u\'verified\': False, u\'profile_sidebar_fill_color\': u\'DDEEF6\',
u\'profile_text_color\': u\'333333\', u\'listed_count\': 0}'
>>> json.loads(line)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 326, in loads
return _default_decoder.decode(s)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 366, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 382, in raw_decode
obj, end = self.scan_once(s, idx)
ValueError: Expecting property name: line 1 column 1 (char 1)
Run Code Online (Sandbox Code Playgroud)
Nic*_*tin 28
这绝对不是JSON - 不管怎样都没有打印过.它已经被解析为一个Python对象 - JSON会有false
,不会False
,并且不会显示u
unicode的字符串(所有JSON字符串都是unicode).你确定你没有让你的json字符串在链中的某个地方变成一个免费的Python对象,因此将它加载到json.loads()显然是错误的,因为事实上它不是一个字符串?
小智 27
有时您可能会遇到此错误,因为python无法很好地识别您的字符串值.举个例子:我花了很多时间寻找这种错误的起源.这是我发现的.
有时候一种语言会识别一种引号,而不是另一种引用:顺便说一句,要在JavaScript中将字符串解析为json,所有引号都必须采用'格式
要在JavaScript中将字符串解析为json,所有引号必须采用"不是真正逻辑的格式".
希望您可以使用替换功能.对于Python:
json.loads(s.replace("\'", '"'));
Run Code Online (Sandbox Code Playgroud)
希望它可以节省你花在寻找这个bug上的时间!