python JSON ValueError: Expecting property name: line 1 column 2 (char 1)
python JSON ValueError: Expecting property name: line 1 column 2 (char 1)
使用json.loads,解析以下数据为json格式时,报错
a = [{'start_city': '1', 'end_city': 'aaa', 'number': 1},{'start_city': '2', 'end_city': 'bbb', 'number': 1},{'start_city': '3', 'end_city': 'ccc', 'number': 1}]
报错提示:ValueError: Expecting property name: line 1 column 2 (char 1)
代码如下
a = "[{'start_city': '1', 'end_city': 'aaa', 'number': 1},\{'start_city': '2', 'end_city': 'bbb', 'number': 1},\{'start_city': '3', 'end_city': 'ccc', 'number': 1}]"import jsonjson.loads(a)
原因是为什么?
这要先从json格式什么来讲。
JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度。
JSON就是一串字符串 只不过元素会使用特定的符号标注。
{} 双括号表示对象
[] 中括号表示数组
"" 双引号内是属性或值
: 冒号表示后者是前者的值(这个值可以是字符串、数字、也可以是另一个数组或对象)
所以 {"name": "Michael"} 可以理解为是一个包含name为Michael的对象
而[{"name": "Michael"},{"name": "Jerry"}]就表示包含两个对象的数组
当然了,你也可以使用{"name":["Michael","Jerry"]}来简化上面一部,这是一个拥有一个name数组的对象
【特别提醒:现在还有很多人存在一些误区,为什么{name:’json’}在检验时通过不了,那是因为JSON官网最新规范规定:如果是字符串,那不管是键或值最好都用双引号引起来,所以上面的代码就是{“name”:”json”}】
所以在python中json.loads无法解析单号,就会提示错误ValueError: Expecting property name: line 1 column 3 (char 2)
解决办法如下:
1.使用ast方法,最安全方法
In [15]: a = "[{'start_city': '1', 'end_city': 'aaa', 'number': 1},\...: {'start_city': '2', 'end_city': 'bbb', 'number': 1},\...: {'start_city': '3', 'end_city': 'ccc', 'number': 1}]"In [16]: import astIn [17]: ast.literal_eval(a)
Out[17]:
[{'end_city': 'aaa', 'number': 1, 'start_city': '1'},{'end_city': 'bbb', 'number': 1, 'start_city': '2'},{'end_city': 'ccc', 'number': 1, 'start_city': '3'}]
2.最笨方法使用replace,把单引号转换为双引号,
In [35]: strs = "{'key':'val'}"In [36]: strs = strs.replace("'",'"')In [37]: json.loads(strs)
Out[37]: {u'key': u'val'}
3. 最方便方法,但是会有安全隐患方法
我用的这个方法:
请参考文章:python 为什么说eval要慎用?使用eval 带来的潜在风险?什么情况下使用eval?
In [38]: a = "[{'start_city': '1', 'end_city': 'aaa', 'number': 1},\...: {'start_city': '2', 'end_city': 'bbb', 'number': 1},\...: {'start_city': '3', 'end_city': 'ccc', 'number': 1}]"In [39]: eval(a)
Out[39]:
[{'end_city': 'aaa', 'number': 1, 'start_city': '1'},{'end_city': 'bbb', 'number': 1, 'start_city': '2'},{'end_city': 'ccc', 'number': 1, 'start_city': '3'}]
python JSON ValueError: Expecting property name: line 1 column 2 (char 1)相关推荐
- json.decoder.JSONDecodeError: Invalid \escape: line 1 column 44 (char 43)
import jsondict_str = '{ "content": ""\u003Cblockquote class=\"pgc-blockquo ...
- (已解决)json.decoder.JSONDecodeError: Extra data: line 1 column 47 (char 46)
问题描述 *json.load(file)*出现上述错误. 原因是file中包含不止一条记录.json.load函数只能解析一条记录. 解决方案 将多条记录强行封装为一条,便可读取. Referenc ...
- json.loads解码字符串时出错:JSONDecodeError: Invalid \escape: line 1 column 2687 (char 2686)
一.问题描述 在使用爬虫爬取数据时使用json.loads()解码JSON数据时遇到如下错误: 1 致错语句: json_data = json.loads(str(star_infos).repla ...
- Python 中 JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2
当我们尝试解析无效的 JSON 字符串(例如,单引号键或值,或尾随逗号)时,会出现 Python"JSONDecodeError: Expecting property name enclo ...
- python中json.loads报错: Expecting ‘,‘ delimiter: line 1 column 3545 (char 3544)
在python中使用json.loads报错: Expecting ',' delimiter: line 1 column 3545 (char 3544) 原因: json字符串为: jsonSt ...
- Python 中JSONDecodeError: Expecting value: line 1 column 1 (char 0)错误
文章目录 尝试解析空字符串会导致错误 错误的常见原因 尝试解析无效的 JSON 值 忘记用引号括起属性或字符串值 对属性或值使用单引号而不是双引号 确保你没有尾随逗号 发出 HTTP 请求时得到空响应 ...
- 【debug】json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
摘要 环境: 编程语言:Python 3.7 操作系统:Win 10 json数据对象:https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO ...
- json.decoder.JSONDecodeError: Expecting ‘,‘ delimiter: line xx column xx (char xxx)
将python json字符串转为json的时候出现了:json.decoder.JSONDecodeError: Expecting ',' delimiter: line 12 column 55 ...
- JSONDecodeError: Expecting property name enclosed in double quotes: line 2 column 3 (char 4)解决方案
大家好,我是爱编程的喵喵.双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中.从事机器学习以及相关的前后端开发工作.曾在阿里云.科大讯飞.CCF等比赛获得多次Top名次.现 ...
最新文章
- 算法图解/二分查找/简单查找/选择排序/递归算法/快速排序算法/
- jenkins配置git
- 如何让fragment每次都重新加载_每次都能正确判罚丨网球是如何电子化的
- 慕课网Flask高级编程实战-10.鱼书业务处理
- python批量ping50台服务器_Python小技巧—批量ping的方法
- 关于排版中经常见的问题的解决方法
- docker之数据卷管理
- 2017.9.27 书架 思考记录
- 苹果WWDC 2020回顾:来看看这个安卓味的iOS 14!
- sonar不支持mysql_sonar-iOS的实践
- sudo: unable to resolve host xxx解决办法
- dnf虚拟机安装的解决方法
- 三分钟明白 Activity工作流 -- java运用
- 内存管理技术——离散分配方式
- 婚恋交友诈骗案例,交友要谨慎
- 易语言 html 服务器,易语言模拟网页Web服务器源代码
- 安装project2016失败:Windows Installer和即点即用版本的Office程序不能并行
- 基于javaweb+SSM农产品水果店销售管理系统
- 生产者消费者模型的作用
- 【Office Outlook】发送具有数字签名的电子邮件
热门文章
- 计算机实测物理实验报告,計算机实测物理系数实验论文.doc
- 为什么ppt图形卡配置不正确_电脑配置 | 赛博朋克2077什么配置能玩
- 访问外部扩展C语言编程,单片机C语言编程(系统扩展IC)8.ppt
- linux已知pid定向输出,Linux启动脚本输出pid
- java拷贝文件权限_boto3 copy vs copy_object关于s3中的文件权限ACL
- 随风摆动效果_扫盲贴!节目中的AR虚拟效果,使用物理引擎后有什么不同?
- android 左移动画_Android研究院之游戏开发Tween动画的实现(十九)
- 形态学边缘提取matlab,在Matlab平台下基于形态学方法对LIDAR数据进行建筑物边缘提取...
- python requests 接口测试_python+requests接口测试基础
- Mysql 参数最佳实践_MySQL参数调优最佳实践