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)相关推荐

  1. json.decoder.JSONDecodeError: Invalid \escape: line 1 column 44 (char 43)

    import jsondict_str = '{ "content": ""\u003Cblockquote class=\"pgc-blockquo ...

  2. (已解决)json.decoder.JSONDecodeError: Extra data: line 1 column 47 (char 46)

    问题描述 *json.load(file)*出现上述错误. 原因是file中包含不止一条记录.json.load函数只能解析一条记录. 解决方案 将多条记录强行封装为一条,便可读取. Referenc ...

  3. json.loads解码字符串时出错:JSONDecodeError: Invalid \escape: line 1 column 2687 (char 2686)

    一.问题描述 在使用爬虫爬取数据时使用json.loads()解码JSON数据时遇到如下错误: 1 致错语句: json_data = json.loads(str(star_infos).repla ...

  4. Python 中 JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2

    当我们尝试解析无效的 JSON 字符串(例如,单引号键或值,或尾随逗号)时,会出现 Python"JSONDecodeError: Expecting property name enclo ...

  5. python中json.loads报错: Expecting ‘,‘ delimiter: line 1 column 3545 (char 3544)

    在python中使用json.loads报错: Expecting ',' delimiter: line 1 column 3545 (char 3544) 原因: json字符串为: jsonSt ...

  6. Python 中JSONDecodeError: Expecting value: line 1 column 1 (char 0)错误

    文章目录 尝试解析空字符串会导致错误 错误的常见原因 尝试解析无效的 JSON 值 忘记用引号括起属性或字符串值 对属性或值使用单引号而不是双引号 确保你没有尾随逗号 发出 HTTP 请求时得到空响应 ...

  7. 【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 ...

  8. json.decoder.JSONDecodeError: Expecting ‘,‘ delimiter: line xx column xx (char xxx)

    将python json字符串转为json的时候出现了:json.decoder.JSONDecodeError: Expecting ',' delimiter: line 12 column 55 ...

  9. JSONDecodeError: Expecting property name enclosed in double quotes: line 2 column 3 (char 4)解决方案

      大家好,我是爱编程的喵喵.双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中.从事机器学习以及相关的前后端开发工作.曾在阿里云.科大讯飞.CCF等比赛获得多次Top名次.现 ...

最新文章

  1. 算法图解/二分查找/简单查找/选择排序/递归算法/快速排序算法/
  2. jenkins配置git
  3. 如何让fragment每次都重新加载_每次都能正确判罚丨网球是如何电子化的
  4. 慕课网Flask高级编程实战-10.鱼书业务处理
  5. python批量ping50台服务器_Python小技巧—批量ping的方法
  6. 关于排版中经常见的问题的解决方法
  7. docker之数据卷管理
  8. 2017.9.27 书架 思考记录
  9. 苹果WWDC 2020回顾:来看看这个安卓味的iOS 14!
  10. sonar不支持mysql_sonar-iOS的实践
  11. sudo: unable to resolve host xxx解决办法
  12. dnf虚拟机安装的解决方法
  13. 三分钟明白 Activity工作流 -- java运用
  14. 内存管理技术——离散分配方式
  15. 婚恋交友诈骗案例,交友要谨慎
  16. 易语言 html 服务器,易语言模拟网页Web服务器源代码
  17. 安装project2016失败:Windows Installer和即点即用版本的Office程序不能并行
  18. 基于javaweb+SSM农产品水果店销售管理系统
  19. 生产者消费者模型的作用
  20. 【Office Outlook】发送具有数字签名的电子邮件

热门文章

  1. 计算机实测物理实验报告,計算机实测物理系数实验论文.doc
  2. 为什么ppt图形卡配置不正确_电脑配置 | 赛博朋克2077什么配置能玩
  3. 访问外部扩展C语言编程,单片机C语言编程(系统扩展IC)8.ppt
  4. linux已知pid定向输出,Linux启动脚本输出pid
  5. java拷贝文件权限_boto3 copy vs copy_object关于s3中的文件权限ACL
  6. 随风摆动效果_扫盲贴!节目中的AR虚拟效果,使用物理引擎后有什么不同?
  7. android 左移动画_Android研究院之游戏开发Tween动画的实现(十九)
  8. 形态学边缘提取matlab,在Matlab平台下基于形态学方法对LIDAR数据进行建筑物边缘提取...
  9. python requests 接口测试_python+requests接口测试基础
  10. Mysql 参数最佳实践_MySQL参数调优最佳实践