当前位置: 首页 > news >正文

json.decoder.JSONDecodeError: Extra data: line 1 column 332 (char 331)

项目场景:

提示:扩充数据集时,同步修改json标签中的"imagePath"字段的值,出现json文件读写不一致问题。

采用open函数读写模式修改json文件字段。open('jsonF.json', 'r+')


问题描述

运行修改json文件报错:json.decoder.JSONDecodeError: Extra data: line 1 column 332 (char 331)
源代码:

 with open((os.path.join(dir_path, '142' + file_name)), 'r+') as jsonFile:data = json.load(jsonFile)data["imagePath"] = '142' + imagePathjson.dump(data, jsonFile, ensure_ascii=False)

原因分析:

需要了解open函数读写文件模式,和文件之指针:

  1. json库load加载json文件后(data = json.load(jsonFile)),又访问了 data[“imagePath”] 。此时,文件指针指向了data[“imagePath”]的下一行。这时,直接转存数据json.dump(data, jsonFile),文件指针位置不对。所以,会报错。
  2. 当你loads json文件时出现json.decoder.JSONDecodeError,也可能是因为存储时值没有加双引号,可能是因为值里面有特殊字符,比如"等。

解决方案:

移动文件指针到开始位置jsonFile.seek(0) ,转存数据传入参数ensure_ascii=False,之后调用截断函数jsonFile.truncate()防止写入其他东西。:

  with open((os.path.join(dir_path, '142' + file_name)), 'r+') as jsonFile:data = json.load(jsonFile)data["imagePath"] = f"142{imagePath}"jsonFile.seek(0)  # rewind json.dump(data, jsonFile,ensure_ascii=False)jsonFile.truncate()
http://www.lryc.cn/news/250646.html

相关文章:

  • rust持续学习 COW
  • 【计算机网络】14、DHCP
  • 【FPGA】Verilog:计数器 | 异步计数器 | 同步计数器 | 2位二进制计数器的实现 | 4位十进制计数器的实现
  • IDEA常用快捷键
  • 【2024秋招】2023-10-17 金山云文档服务端二面
  • 一种excel多线程并发写sheet的方案
  • 深入了解接口测试:揭秘网络分层和数据处理!
  • Java并发编程
  • vue+echarts实现依赖关系无向网络拓扑结图节点折叠展开策略
  • Unity3d 灯光阴影开启,法线贴图出现BUG
  • c语言:模拟实现atoi函数
  • Docker 使用心得
  • Nacos 架构原理
  • 尝试修改vim光标的思路
  • SpringBoot整合Activiti7——消息事件(十)
  • 高翔:《自动驾驶与机器人中的SLAM技术 》-Slam_in_autonomous_driving 编译过程中遇到的问题
  • org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder 实现密码加密 验证 代码示例
  • 《微信小程序开发从入门到实战》学习三十八
  • 云服务器哪家便宜?亚马逊AWS等免费云服务器推荐
  • Linux删除了大文件为什么磁盘空间没有释放?
  • 编写bat脚本执行msyql建库sql
  • 【JavaSE学习专栏】第04篇 Java面向对象
  • sCrypt 在英国伦敦 Exeter 大学讲学
  • 人工智能基础创新的第二增长曲线
  • 华为OD机试真题-分割均衡字符串-2023年OD统一考试(C卷)
  • 基于SpringBoot的图书推荐系统的
  • 02_学习使用javax_ws_rs_下载文件
  • js校验多个时间段的时间是否有交叉
  • Python Spyder开发的应用项目
  • ES6知识点