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"
相关推荐
Java成神之路-1 天前
SpringMVC 响应实战指南:页面、文本、JSON 返回全流程(Spring系列13)
java·spring·json
我命由我123451 天前
在 React 项目中,可以执行 npm start 命令,但是,无法执行 npm build 命令
前端·javascript·vue.js·react.js·前端框架·json·ecmascript
带刺的坐椅1 天前
RFC 9535:JSONPath 的标准化之路
java·json·jsonpath·snack4·rfc9535
孙同学20201 天前
如何将 JSON 数据转换为 Excel 工作表
python·json·excel
ID_180079054732 天前
除了 Python,还有哪些语言可以解析 JSON 数据?
开发语言·python·json
电商API&Tina2 天前
跨境电商如何接入1688官方寻源通接口?附接入流程
java·数据库·python·sql·oracle·json·php
神の愛3 天前
利用json-to-ts工具进行转换,放置在typeScript.ts文件中
javascript·typescript·json
BUG_MeDe3 天前
从Json对象中提取某个对象的一点注意--libjson-c
linux·json
HelloTonyGo3 天前
个人游戏笔记本免费“养龙虾”(七)OpenClaw的openclaw.json文件的基本配置
ubuntu·json·配置·读写权限·openclaw
数据知道4 天前
claw-code 源码详细分析:`reference_data` JSON 快照——大型移植里「对照底稿」该怎么治理与演进?
linux·python·ubuntu·json·claude code