python json.loads报json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes

代码如下:

"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)

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值