JSON 文件基础介绍

一、JSON 核心定义

  1. 全称:JavaScript Object Notation(JavaScript 对象表示法)
  2. 本质 :一种轻量级的文本数据交换格式 (整体是符合特定规则的字符串
  3. 作用:不同编程语言之间传递 / 存储数据(比如 Python 程序和前端、后端交互,或保存配置文件)
  4. 核心特点:语法简单、易读易写、跨语言兼容

二、JSON 与 Python 数据类型对应关系

JSON 类型 Python 类型 示例 关键注意点
对象(object) 字典(dict) {"name": "张三"} JSON 键必须用双引号,值如果是字符串类型的话也必须用双引号
数组(array) 列表(list) [1, 2, "篮球"] 元素可混合多种 JSON 类型
字符串(string) 字符串(str) "Python" 必须用双引号包裹
数字(number) 整数 / 浮点数 18 / 3.14 无引号,支持正负 / 小数
布尔值 True/False true / false JSON 是小写,Python 大写
空值 None null JSON 写 null,Python 写 None

三、JSON 核心语法规则

1. 整体规则

  • 一个合法的 JSON 文本 / 文件,只能有一个顶层数据 (要么是 {}、要么是 []、要么是单个基础值如 18/"张三"

2. 对象({})规则(对应 Python 字典)

  • {} 包裹,内部是键:值对的集合,键值对之间用英文逗号分隔
  • 键:必须用双引号 包裹(如 "name",不能写 name'name'
  • 值:可以是任意 JSON 类型(字符串、数字、布尔、null、数组、嵌套对象)
  • ✅ 正确示例:{"age": 18, "hobbies": ["篮球", "游戏"], "info": {"gender": "男"}}
  • ❌ 错误示例:{name: "张三", 'age': 18, 20}(键无引号 / 单引号、存在孤立值)

3. 数组(\[\])规则(对应 Python 列表)

  • [] 包裹,内部是任意 JSON 类型的元素,元素之间用英文逗号分隔
  • 无需键,直接放值即可,支持嵌套对象 / 数组
  • ✅ 正确示例:["张三", 18, true, null, {"age": 20}]
  • ❌ 错误示例:['张三', 18, True](单引号、布尔值大写)

4. 基础值规则

  • 字符串:必须用双引号("张三" ✅,'张三' ❌,张三 ❌)
  • 数字:无引号(18 ✅,"18" ❌)
  • 布尔:只能写 true/false(小写)
  • 空值:只能写 null

四、JSON 常用写法

模板 1:单对象(最常用,如存储单个用户信息)

javascript 复制代码
{
  "name": "张三",
  "age": 18,
  "is_student": true,
  "hobbies": ["篮球", "游戏"],
  "score": null,
  "address": {"city": "北京", "district": "朝阳"}
}

模板 2:数组(存储多个同类数据)

javascript 复制代码
[
  {"name": "张三", "age": 18},
  {"name": "李四", "age": 20},
  {"name": "王五", "age": 19}
]

数组里面混合不同数据类型也行

javascript 复制代码
{
  "user_id": 1001,
  "action_logs": [  // 数组里混合不同类型的行为记录
    "2026-03-18 登录系统",  // 字符串
    {"action": "下单", "amount": 99.9},  // 对象
    ["浏览商品", 1002, 1003],  // 数组
    null  // 空记录(比如未完成的操作)
  ]
}

模板 3:对象嵌套数组(实际开发最常用)

javascript 复制代码
{
  "class_name": "一年级一班",
  "total_students": 3,
  "students": [
    {"name": "张三", "age": 18},
    {"name": "李四", "age": 20},
    {"name": "王五", "age": 19}
  ],
  "update_time": "2026-03-18"
}

模板 4:单个基础值(极少单独用,了解即可)

javascript 复制代码
18          // 顶层是数字
"张三"      // 顶层是字符串
true        // 顶层是布尔值
null        // 顶层是空值

五、Python 操作 JSON 的核心函数

Python 内置 json 模块,无需安装,核心 4 个函数:

函数 作用 适用场景 关键参数
json.dumps() Python 对象 → JSON 字符串 内存中转换(如接口传参) ensure_ascii=False(保留中文)、indent=4(格式化)
json.loads() JSON 字符串 → Python 对象 解析接口返回的 JSON 字符串 -
json.dump() Python 对象 → 写入 JSON 文件 保存数据到文件 ensure_ascii=Falseencoding="utf-8"
json.load() 从 JSON 文件 → Python 对象 读取文件中的 JSON 数据 encoding="utf-8"
相关推荐
天若有情67318 小时前
独立开发复盘:我用 Node.js 做了个在线工具箱
前端·json·工具
Asurplus1 天前
【SpringBoot4】3、从SpringBoot4升级Sa-Token1.46.0报错
redis·sa-token·json·jackson·springboot4
代码中介商1 天前
C++ 预约系统实战(三):服务端实现——libevent 事件驱动与业务路由
c++·json·c/s
譕痕2 天前
notepad++安装插件 可视化展示 json串内容
json·intellij-idea
databook3 天前
DuckDB + SQL 高效分析 JSON 数据
数据分析·json·nosql
数据狐(Datafox)4 天前
1688商品列表API接口解析(附 JSON 样例)
java·开发语言·数据库·爬虫·json
j7~5 天前
【Linux网络加餐】(篇六)网络版计算器(上):模板方法模式、序列化与 JSON
linux·c++·json·序列化·反序列化·网络版计算机
梦帮科技5 天前
Next.js 16 模块化单体实战:App Router、领域模块与 Route Handler 分层
css·数据结构·链表·正则表达式·node.js·json·html5
蓝悦无人机5 天前
LangChain v1.0 系列教程——第2章 工具系统
langchain·json·装饰器模式·pydantic
Lyra_Infra6 天前
从一段错误 JSON 说起:Policy、Role 与 IAM
后端·json·aigc