网站使用帮助
- 1、点击示例按钮可查看JSON对比效果
- 2、左侧红色标记表示多于右侧内容,右侧绿色标记表示多于左侧内容
- 3、网站复选框、输入框及按钮等,鼠标悬浮片刻会有提示信息,请注意查看
- 4、如输入JSON,则自动格式化
- 5、如输入DICT,则自动转为JSON并格式化
- 6、如输入已转义JSON/DICT,则自动去除转义并格式化
- 7、如您喜欢黑色主题,可在右上角点击'白天'切换
- 8、如您喜欢多彩导航条,可在右上角点击'换肤'切换
- 9、如您在使用本站中遇到问题,可点击底部'交流群'反馈
工具介绍
一、什么是 JSON?
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于 JavaScript 的一个子集,采用完全独立于语言的文本格式来存储和表示数据。
JSON 具有易于阅读和编写、易于机器解析和生成的特点,是目前互联网上最常用的数据交换格式之一。
JSON 的结构主要由两种数据结构组成:
- 对象(Object):由键值对组成的无序集合,使用花括号
{}包裹,键必须是字符串类型,值可以是字符串、数字、布尔值、数组、对象或 null。 - 数组(Array):由有序的值组成的集合,使用方括号
[]包裹,数组中的元素可以是字符串、数字、布尔值、数组、对象或 null。
JSON 的语法规则非常简单:
- 键必须用双引号包裹
- 字符串值必须用双引号包裹
- 逗号用于分隔键值对和数组元素
示例:
{
"name": "张三",
"age": 25,
"isStudent": false,
"hobbies": ["阅读", "编程", "旅行"],
"address": {
"city": "北京",
"district": "朝阳区"
}
}
二、什么是 Dict(字典)?
Dict(字典)是 Python 编程语言中的一种数据结构,也称为关联数组或哈希表。它是一种可变的、无序的键值对集合,其中键必须是不可变的类型(如字符串、数字、元组),值可以是任意类型的对象。
Python 字典具有以下特点:
- 键必须唯一,不能重复
- 键必须是不可变的(hashable)
- 值可以是任意类型
- 字典是可变的,可以添加、删除、修改键值对
- 从 Python 3.7 开始,字典保持插入顺序
示例:
person = {
"name": "张三",
"age": 25,
"is_student": False,
"hobbies": ["阅读", "编程", "旅行"],
"address": {
"city": "北京",
"district": "朝阳区"
}
}
三、JSON 与 Dict 的区别
虽然 JSON 和 Python Dict 在外观上非常相似,但它们之间存在一些重要的区别:
| 特性 | JSON | Python Dict |
|---|---|---|
| 类型 | 数据交换格式(字符串) | Python 数据结构 |
| 键的要求 | 必须是字符串,用双引号包裹 | 可以是任意不可变类型 |
| 值的类型 | 字符串、数字、布尔值、数组、对象、null | 任意 Python 对象 |
| 布尔值 | true / false(小写) | True / False(首字母大写) |
| 空值 | null | None |
| 注释 | 不支持 | 支持(# 开头) |
| 尾部逗号 | 不允许 | 允许(Python 3.0+) |
| 引号 | 只能使用双引号 | 单引号、双引号均可 |
| 用途 | 数据存储和交换 | 程序内部数据处理 |
四、JSON 与 Dict 的转换
在 Python 中,我们经常需要在 JSON 和 Dict 之间进行转换,这可以通过 json 模块来实现:
1. Dict 转 JSON
import json
person = {
"name": "张三",
"age": 25,
"is_student": False,
"hobbies": ["阅读", "编程", "旅行"]
}
# 将字典转换为 JSON 字符串
json_str = json.dumps(person, ensure_ascii=False, indent=2)
print(json_str)
2. JSON 转 Dict
import json
json_str = '''{
"name": "张三",
"age": 25,
"is_student": false,
"hobbies": ["阅读", "编程", "旅行"]
}'''
# 将 JSON 字符串转换为字典
person = json.loads(json_str)
print(person["name"]) # 输出: 张三
注意事项:
- 使用
json.dumps()时,设置ensure_ascii=False可以正确处理中文 - JSON 中的
null会被转换为 Python 的None - JSON 中的
true/false会被转换为 Python 的True/False - JSON 不支持 Python 特有的类型(如 tuple、set、datetime 等),需要自定义编码器
豫公网安备41142602000124号