Python字典:Python字典-CSDN博客
一、什么是JSON
1.JSON (JavaScript Object Notation)是一种轻量级的数据交换格式,它使用键值对和列表来表示数据。JSON的本质是字符串,也是一个通用的序列化模块,通过它可以完成通用化的序列化与反序列化操作。因为几乎所有的编程语言都有json模块,而且他们序列化与反序列化的规则是统一的。
1.1dict 与 JSON 的区别
JSON是一种数据格式 | 字典是一种数据结构 |
JSON中的key可以重复 | 字典中的key不能重复 |
JSON中的key必须使用("key": "value")双引号包裹 | 字典中使用单引号('': '')/双引号("": "")都可以 |
JSON中的key必须是字符串 | 字典中的key可以是任何不可变数据类型 |
JSON的类型是字符串 | 字典的类型是字典 |
JSON中的数组是有序的,保留元素的插入顺 | 而字典是无序的,它不保证元素的插入顺 |
二、JSON序列化与反序列化
2.1序列化
序列化(Serialization):是一种将对象以一连串的字节序列的过程,将程序中的对象放入硬盘(文件)中保存就是序列化,如果不存放在磁盘中,而是一直存放在内存中,会增大内存的消耗;序列化就是将对象的状态信息转换为可以存储或传输的形式的过程
2.2反序列化
反序列化:将字节序列恢复为对象的过程
2.3Python中可序列化数据类型
- 可序列化:number、str、list、tuple、dict 字典是最常用的序列化数据类型
- 不可序列化:class 、def (函数与实例化对象)、set 是无法进行序列化的
2.4dumps() 与 loads() 函数
dumps():对象序列化
# int 序列化
int_a = 1
int_a1 = json.dumps(int_a)
print(int_a1) # 输出 1
print(type(int_a1)) # <class 'str'>
# List 序列化
list_a = [1,2,3]
list_a1 = json.dumps(list_a)
print(list_a1) # [1,2,3]
print(type(list_a1)) # <class 'str'>
# tuple 序列化,注意元组序列化后会转为中括号
tuple_a = (1,2,3)
tuple_a1 = json.dumps(tuple_a)
print(tuple_a1) # [1,2,3]
print(type(tuple_a1)) # <class 'str'>
# dict 序列化
dict_a = {'a':1 , 'b':2}
dict_a1 = json.dumps(dict_a)
print(dict_a1) # {"a": 1, "b": 2}
print(type(dict_a1)) # <class 'str'>
经过序列化后,字典变成了字符串的同时,字典内的 单引号 变成了 双引号,中文也变成了比特类型,并且进行了 encode
loads() 函数:对象反序列化
# dict dumps() 序列化
dict_a = {'a':1 , 'b':2}
dict_a1 = json.dumps(dict_a)
print(dict_a1) # {"a": 1, "b": 2}
print(type(dict_a1)) # <class 'str'>
# dict loads() 反序列化
dict_a2 = json.loads(dict_a1)
print(dict_a2) # {'a': 1, 'b': 2}
print(type(dict_a2)) # <class 'dict'>