加载Josn文件出错,json.decoder.JSONDecodeError: Extra data: line 1 column 17 (char 16)

前言

背景:我在爬虫爬取数据之后将其保存为json格式数据,而后进行数据清洗,不过在做数据清洗加载数据时,遇到了如图的问题。

看到报错原因为decode,首先猜测是否是因为编码格式诸如‘utf-8’之类的问题,尝试了一下’utf-8’,'utf-16’仍然报错,遂放弃。于是想如果不是因为编码问题,可能问题是因为保存的格式有问题,查看最终保存在json文件格式的数据如下图所示:
json文本格式
可以看到截图里面出现了一个红色灯泡,因此保存的文件格式应该有很大问题,首先需要弄明白json文件是怎样保存数据的,例如csv文件是逗号分隔值文件(分割符号也可以不是逗号)。

Json可以保存哪种数据

根据百度百科中查询可知:
Json百度百科链接
JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
其中Json支持的基本类型如下:
对象(字典),数组(列表),字符串,数字,布尔值,空值
百度百科中介绍如下图:
在这里插入图片描述
因此报这样的错,是因为我们读取的根本就不是json文件格式,在写入文件中我是一行一行写入数据,每一行的数据格式如下图,

{"name": "Tom", "age": 12}

每一行都是python字典格式数据,而在json文件中被认为是对象,因此在前面写入时,没有出现问题,但是在读入数据时,文件中的数据不再是json所支持的文件格式。

解决办法

在读入json文件时,确保想要读取的数据是python中字典格式或者列表格式,值得注意的一点是json对象中所有键都必须是字符串。
一个简单的示例如下:

import json

dic2 ={'name':'Jarry','age':15,1:'s'}
filename ='test.json'
print(dic2)
with open(filename,'w') as f_obj:
    json.dump(dic2,f_obj)

其中在pycharm中输出如下:
在这里插入图片描述
而在json文件中在这里插入图片描述
可以看到当以json文件格式保存时,键为int类型的转变成了字符串类型。


版权声明:本文为George_RED原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。