Python中json的load、loads、dump、dumps的用法

Python中json的load、loads、dump、dumps的用法
最新回答
敷衍我吧你

2022-06-16 11:16:05

在处理数据时经常会用到json的load和dump功能,很容易把load和loads的功能记混,学习不能一知半解,特此记录一下。用json的load/loads读取文件的好处是可以把存储的数据以原始的对象格式加载出来,比如可以加载字典(dict)、列表(list)等,而普通的读取数据可能只能把文件内容当作文本字符串读取出来。

首先要明白哪些格式属于json文件,才能被json load,无论有没有后缀,或者后缀是.txt等,只要文件内容符合json格式标准,都可以使用json load/loas函数。注意,字典格式的key一定得是字符串,如果没有加引号等不符合标准字典格式则也会报错。

json load/loads是将json格式的数据转成python对象,简单来说,load是对文件进行操作的,因此load的主要参数是打开的文件,调用格式通常为 load(f);loads是对字符串进行操作的,因此loads的主要参数是字符串,调用格式通常为 load(str)(为了方便记忆,可以把loads后面的小尾巴s理解为str)。

下面展示读取json数据时的常用写法:以dict格式的数据文件text1.json为例,其他格式也一样,都可以通过以下方式读取:

text1.json的文件内容如下:

json.loads的方式是先读取每行的字典格式的字符串,再解析成字典。这种方法也可以读取文件中有多行dict的形式,此时json.load就不行。

理解了load/loads的用法,dump和dumps的用法就也很简单了,将一个python对象进行json格式的编码,和load、loads是对应的。

dump是将python对象转成json格式存入文件,主要格式是dump(obj, f);dumps是将python对象转成json格式的字符串,主要格式是dumps(obj)。

下面展示存储son数据时的常用写法:可以看出json.dump是没有返回值的,直接将dic写进文件w中;json.dumps是将obj转成str,因此有返回值str,再用write()函数把字符串写入文件。

在dump/dumps时一般都需要加ensure_ascii=False这个参数,否则存储的文件可能是乱码,这是因为默认值为True,能将所有传入的非ASCII字符转义输出,如果ensure_ascii为False,则这些字符将按原样输出。