这个主题,网上讨论的很多,具体的流程就不再多说,不过值得说到的是:Python只能解析规范的JSON数据,或者说,就是只能解析那些变量的名字和值都用双引号引起来的数据,而不能解析那些变量名字外面没有引号的数据。举例来说:
[{name:"ppdx",value:"154"}]
是不能被正确解析的。而
[{"name":"ppdx","value":"154"}]
是能够被正确的解析的。
很多网站返回的是第一种格式的JSON数据,这个时候,就必须进行一次预处理,处理的方法是使用正则表达式对各个变量名字的部分进行修改。修改所用的表达式如下,特别需要注意到的是那个[]后面的+,和S+后面的?,这两个地方是匹配能够正确进行的关键。
re.sub(r'([{,]+)(S+?):', r'1"2":', json_str)
经过上述处理之后的JSON就可以直接在Python里面被解析出来了。