Python之Json数据的存储

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写。

这次就简单介绍下python下关于JSON字符串的编解码以及存储

目录

1、json.dumps()

 2、json.loads()

3、json.dump()

4、json.load()

5、pickle.dump()

6、pickle.load()


python使用JSON函数需要先导入JSON库:import json

json 库主要包含两对函数:

1、json.dumps() 与  json.loads()

2、json.dump()  与 json.load()

这两对函数分别用于将python对象与JSON字符串之间的编解码,其中第二对函数可以将python对象编码为json字符串后存入文件中,以备将来之用

关于这两对函数的基本用法做一个简单简绍:

1、json.dumps()

将python对象转化为JSON字符串类型

#encoding:utf-8
import json

user1 = {
    "name": "SheenChi",
    "sex": "male",
    "age": 23
}

user2 = {
    "name" : "Jack",
    "sex" : "female",
    "age" : 10
}

testList = [user1, user2]
dict_dumps = json.dumps(user1)
list_dumps = json.dumps(testList)
print(type(list_dumps))
print(type(dict_dumps))
print(dict_dumps)
print(list_dumps)

运行上边的代码可以得到下面的结果,从结果可以知道,无论是字典类型:user1,还是列表里嵌套字典的list类型:testList

经过json.dumps() 转换就会变成json字符串类型

<class 'str'>
<class 'str'>
{"name": "SheenChi", "age": 23, "sex": "male"}
[{"name": "SheenChi", "age": 23, "sex": "male"}, {"name": "Jack", "age": 10, "sex": "female"}]

 此时输出list_dumps的第一个元素,由下边的结果可以看到,结果是字符串的一个元素

print(list_dumps[0])
[

 如果感觉直接将list转换为json字符串的形式,有点不容易观察,也可以在转换时设置格式化转换,代码如下:

a = json.dumps(testList, indent=4, separators=(',', ': '))
print(a)

 输出结果如下,虽然是字符串,但现在看上去也很直观

[
    {
        "name": "SheenChi",
        "age": 23,
        "sex": "male"
    },
    {
        "name": "Jack",
        "age": 10,
        "sex": "female"
    }
]

 2、json.loads()

通过json.loads() 可以经json字符串转换为原来的python类型,用法如下:

list_loads = json.loads(list_json)
print(type(list_loads))
print(list_loads)
<class 'list'>
[{'name': 'SheenChi', 'age': 23, 'sex': 'male'}, {'name': 'Jack', 'age': 10, 'sex': 'female'}]

 此时再输出list_loads的第一个元素,可以得到列表中的第一个字典

print(list_loads[0])
{'name': 'SheenChi', 'age': 23, 'sex': 'male'}

3、json.dump()

json.dump()和json.dumps() 功能类似,只不过将转换后的结果直接存入到了文件中,代码如下:

with open("dump.txt", "w", encoding="utf-8") as fw:
    json.dump(testList, fw)

运行代码后会生成dump.txt文件,里面保存是json字符串

[{"sex": "male", "name": "SheenChi", "age": 23}, {"sex": "female", "name": "Jack", "age": 10}]

这里文件的打开方式为w,不能通过为二进制wb, 当遇到一些不想让他人直接查看内容情况,需要保存为二进制,此时需要另一个函数模块:pickle 序列化存储模块,稍后简单概括

4、json.load()

用来读取通过json.dump()保存的json字符串,并将字符串转换为原有的python类型

with open("dump.txt", "r", encoding="utf-8") as fr:
    load_list = json.load(fr)
    print("type load_list: ",type(load_list))
    print(load_list)

运行代码后结果如下:

type load_list:  <class 'list'>
[{'sex': 'male', 'name': 'SheenChi', 'age': 23}, {'sex': 'female', 'name': 'Jack', 'age': 10}]

5、pickle.dump()

with open("dump.txt", "wb") as fw:
    pickle.dump(testList, fw)

6、pickle.load()

with open("dump.txt", "rb") as fr:
    load_list = pickle.load(fr)
    print("type load_list: ",type(load_list))
    print(load_list)
type load_list:  <class 'list'>
[{'sex': 'male', 'name': 'SheenChi', 'age': 23}, {'sex': 'female', 'name': 'Jack', 'age': 10}]

猜你喜欢

转载自blog.csdn.net/QI2510980868/article/details/84876173
今日推荐