网站使用帮助
  • 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 等),需要自定义编码器