Python字典(dict)与 JSON 区别

Python字典:Python字典-优快云博客

一、什么是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'> 

### Python 字典 JSON 的关系 在 Python 中,字典dictionary)是一种用于存储键值对的数据结构。JSON(JavaScript Object Notation),作为一种轻量级的数据交换格式,在语法上非常类似于 Python字典表示方式。不过两者存在本质区别JSON 是一种独立于编程语言的纯文本数据格式,而 Python 字典则是特定于 Python 编程环境下的内置数据类型。 #### 转换方法 为了实现二者间的互转,Python 提供了一个名为 `json` 的标准库,它包含了两个核心函数: - **将字典转换为 JSON** 当需要将 Python 字典转化为 JSON 格式的字符串时,可以调用 `json.dumps()` 函数[^1]。该函数接受一个 Python 对象作为输入,并返回其对应的 JSON 表达形式。此外,还可以通过设置额外参数如 `indent` 和 `ensure_ascii` 来控制输出样式和字符编码等问题[^3]。 ```python import json data_dict = {"name": "Alice", "age": 25} json_str = json.dumps(data_dict, indent=4) print(json_str) ``` 这段代码会打印出如下格式化的 JSON 字符串: ```json { "name": "Alice", "age": 25 } ``` - **将 JSON 转换回字典** 如果拥有一个有效的 JSON 字符串并希望将其解析为 Python 字典,则应使用 `json.loads()` 方法[^2]。这个过程称为反序列化或解码,能够把接收到的 JSON 数据还原成易于操作的 Python 结构。 ```python json_string = '{"name": "Bob", "age": 30}' parsed_data = json.loads(json_string) print(parsed_data["name"]) # 输出 Bob ``` #### 区别应用场景 尽管看起来相似,但是 Python 字典JSON 各自适用于不同的场景: - **Python 字典** 主要在程序内部用来高效地管理和访问关联数组;支持任意不可变类型的键,不限制于字符串。 - **JSON** 更多地扮演着跨平台通信的角色,特别是在 Web API 请求/响应中广泛采用。因为它的设计初衷就是为了便于不同系统间传递信息,所以只允许有限几种基本数据类型(比如对象、数组、数值、布尔值等)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值