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"
相关推荐
凌晨一点的秃头猪4 小时前
Python JSON 模块核心函数超详细指南
json
小江的记录本6 小时前
【JWT】JWT(JSON Web Token)结构化知识体系(完整版)
前端·网络·web安全·http·网络安全·json·安全架构
早點睡3907 小时前
ReactNative项目OpenHarmony三方库集成实战:react-native-json-tree
react native·react.js·json
清水白石00816 小时前
Python 对象序列化深度解析:pickle、JSON 与自定义协议的取舍之道
开发语言·python·json
晨欣1 天前
如何根据 config.json 核对 MoE 模型的激活参数:以 gpt-oss-120b 为例(GPT-5.4-high 生成)
gpt·大模型·json·openai
带刺的坐椅1 天前
Snack4 Json 流式解析与自动结构修复深度指南
java·llm·json·jsonpath
m0_584624501 天前
调用接口返回的json数据被截断
java·json
ID_180079054732 天前
模拟1688商品详情的Python API实现,返回符合风格的JSON数据
开发语言·python·json
KingCruel2 天前
MySQL JSON 数据操作
mysql·json