Python程序设计——json操作

当我们想要通过Python语言对json格式的文件进行读写操作的时候,首先我们需要引入json库

import json

我们使用Python标准库json库实现对json文件的基本读取和写入操作,在标准库中,主要涉及到四种方法:
json.dump 将一个python对象编码为json字符串并且保存到文件中
json.load 将一个json文件载入,并且返回一个python字典类型对象
json.dumps 将一个python对象编码为json字符串
json.loads 将一个json字符串转变为一个python字典对象

json.dumps方法

功能:将python对象编码为json字符串

方法:
json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)

例如:

import json

stu_json = json.dumps({"张三": "001", "李四":"002", "王五":"003"})

print(stu_json)

print(type(stu_json))

在上述代码中,我们把一个python字典类型的对象作为dumps方法的参数,并且打印方法的返回值和返回值的类型,得到如下输出:

{"\u5f20\u4e09": "001", "\u674e\u56db": "002", "\u738b\u4e94": "003"}

发现中文并没有正确显示,因此我们需要给dumps方法传入一个可选参数ensure_ascii=False,如下所示:

import json

stu_json = json.dumps({"张三": "001", "李四":"002", "王五":"003"}, ensure_ascii=False)

print(stu_json)

print(type(stu_json))

这个时候我们再次输出结果可以看到:

{"张三": "001", "李四": "002", "王五": "003"}

此时,程序的输出结果和我们的预期结果是一样的,中文被正确地显示出来了。通过print(type(stu_json))语句,我们可以看到输出结果是class ‘str’即dumps方法的返回值是一个字符串类型的数据。

import json

stu_json = json.dumps({"张三": "001", "李四":"002", "王五":"003"}, ensure_ascii=False,indent=4
                        , sort_keys=True, separators=(',', ':'))

print(stu_json)

这里面,ensure_ascii参数为是否使用ascii码方式,对于中文显示来说我们要设置为False;indent为设置每一个键值对前面的缩进空格数量;sort-keys为是否对键进行排序,排序方式为按照ascii码的升序方式;separator为设置分隔符,值得注意的是,分隔符的设置需要传入一个元组数据,第一个参数是分隔不同键值对之间的分隔符;第二个参数是分隔同一个键值对中,键和值之间的分隔符。代码运行结果如下:

{
    "张三":"001",
    "李四":"002",
    "王五":"003"
}

json.loads方法

功能:将一个json字符串转变为一个python字典对象

我们将刚刚输出的字符串当作参数传给loads方法,代码如下:

import json

stu_dict = json.loads("""{
    "张三":"001",
    "李四":"002",
    "王五":"003"
}""")

print(stu_dict)
print(type(stu_dict))

运行结果如下:

{'张三': '001', '李四': '002', '王五': '003'}

通过输出结果不难发现,loads方法成功将json字符串对象转变成了python字典类型对象。

json文件操作——json.dump方法

大多数情况下,我们都需要进行json文件操作,json标准库中提供的json.dump方法就可以实现将python字典对象编码成json字符串对象并且保存到文件之中。以下是一个演示代码:

import json

stu_dict = {
    "张三":"001",
    "李四":"002",
    "王五":"003"
    }

with open('test.json', 'w') as f:  # 用写方式打开一个名为test.json的文件,如果不存在,则创建它
    json.dump(stu_dict, f)  # 写入文件

运行程序,就可以看到在这个.py文件的目录下会产生一个新建的test.json文件,打开可以看到文件内容:

{"\u5f20\u4e09": "001", "\u674e\u56db": "002", "\u738b\u4e94": "003"}

类似地,如果想要正确显示中文并且格式更加美观,我们依然需要向dump方法中传入必要的参数:

import json

stu_dict = {
    "张三":"001",
    "李四":"002",
    "王五":"003"
    }

with open('test.json', 'w') as f:
    json.dump(stu_dict, f, ensure_ascii=False, indent=4, separators=(',', ':'))

再次运行程序就可以看到新建的文件内容已经符合我们的预期:

{
    "张三":"001",
    "李四":"002",
    "王五":"003"
}

json文件操作——json.load方法

方法功能是从文件中读取json字符串,并且转换为python中的字典类型对象。我们将上一步中生成的test.json作为例子演示效果:

import json

with open('test.json', 'r') as f:  # 以读方式打开文件
    stu_dict = json.load(f)

print(stu_dict)
print(type(stu_dict))

程序运行结果如下:

{'张三': '001', '李四': '002', '王五': '003'}

这样我们就成功实现了python语言读取json文件并且将其转化为字典(dict)对象。

你可能感兴趣的:(Python程序设计——json操作)