代码如下:
"variants":[{"variantCode":"0714873001001","sizeCode":"001","sizeName":"24",},{"variantCode":"0714873001002","sizeCode":"002","sizeName":"25",},{"variantCode":"0714873001003","sizeCode":"003","sizeName":"26",},{"variantCode":"0714873001004","sizeCode":"004","sizeName":"27",},{"variantCode":"0714873001005","sizeCode":"005","sizeName":"28",},{"variantCode":"0714873001006","sizeCode":"006","sizeName":"29",},{"variantCode":"0714873001007","sizeCode":"007","sizeName":"30",},{"variantCode":"0714873001008","sizeCode":"008","sizeName":"31",},{"variantCode":"0714873001009","sizeCode":"009","sizeName":"32",}]
一,出现这个错误其实只需要知道一点就能解决,那就是这个数据结构不符合json标准格式,
1,标准JSON的合法符号:{(左大括号) }(右大括号) "(双引号) :(冒号) ,(逗号) [(左中括号) ](右中括号)
2,JSON布尔:必须小写的true和false
3,JSON空:必须小写的null
4,JSON数值:不能使用8/16进制
5,大括号‘}’之前的逗号一定要去掉
6,JSON字符串:特殊字符可在字符前面加 \ 或使用 \u 加 4位16进制数来处理
查看上面的代码,就发现大括号之前的逗号没有去掉,去掉之后就能正常用json.load()解析成dictl了
二,还有一种情况,其实数据没什么问题,特别是爬虫在爬取网站时提取的一些类json字符串,有时候使用json.loads的时候总是出现一些稀奇古怪的错误提示,总是提示数据问题,比如字符编码,逗号,引号,其实你仔细看会发现,数据并没有问题。这时候我们只需要在原始字符串前面加一个‘r’防止字符转义就可以了
# 下面就涉及到了字符转义问题
"""
data ='{"str": "\"IT CAN BE USED IN ALL TYPE OF OCCASIONS ON YOUR MOBILE HEAD OR IN DARKNESS ANYBODY CAN USE FREELY BATTERY CAN BE RECHARGED BY UNIVERSAL ..."}'
"""
# 字符串前加上 r 就可以解决
data ='{"str": r"\"IT CAN BE USED IN ALL TYPE OF OCCASIONS ON YOUR MOBILE HEAD OR IN DARKNESS ANYBODY CAN USE FREELY BATTERY CAN BE RECHARGED BY UNIVERSAL ..."}'
import json
json.loads(data)