JSONJavaScript Object Notation是现代Web开发中最基础、最普适的数据交换格式几乎所有前端、后端、移动端、大模型API、配置文件都离不开它。2026年了它依然是“轻量级数据交换神器”的地位无人撼动。下面从零基础到吃透按实际开发中最常用的路径组织内容前端视角 后端视角 高级/坑点/最佳实践。建议你边看边在浏览器控制台 / Node.js / Python / Go 等环境里敲代码验证。1. JSON 到底是什么30秒速览一种纯文本格式用来描述结构化数据基于 JavaScript 对象字面量语法但更严格语言无关前端 JS、后端 Java/Python/Go/PHP/Rust、大模型的工具调用、配置文件package.json、tsconfig.json、.vscode/settings.json、API 响应……到处都是它官网标准永恒不变https://www.json.org/json-zh.html核心口诀“键必须双引号值只有6种类型其他一律非法”2. JSON 支持的6种值类型必须死记类型示例JS 中的对应类型注意事项 / 常见错误字符串hello、中、\ \\ \nstring必须双引号单引号非法转义字符必背数字42、-3.14、1e-10number无八进制/十六进制字面量NaN/Infinity/undefined 非法布尔true/falseboolean必须小写True/False 非法nullnullnull唯一表示“无值”的方式数组[]、[1, a, true, null]Array有序可混合类型对象{}、{name:张三,age:28}Object无序键值对键必须双引号最常见新手错误Top 52026年还在犯的写成{name: 李四}→ 键用了单引号 → 非法JSON最后多一个逗号{a:1,}→ 部分老解析器会报错现代浏览器/Node大多宽容但不推荐注释{id:1 /* 这是ID */}→ JSON标准完全不支持注释undefined、NaN、Infinity直接写 → 非法函数、Date、正则、Symbol 等 JS 类型 → 直接 stringify 出来是{}或报错3. 前端必会JSON 与 JavaScript 的来回转换// 字符串 → JS 值最常用fetch后解析响应constjsonStr{name:小明,age:18,isVip:true,skills:[JS,React]};constdataJSON.parse(jsonStr);// 成功 → 对象console.log(data.name);// 小明// 安全版本防XSS/恶意JSONtry{constsafeDataJSON.parse(untrustedJsonStr);}catch(e){console.error(非法JSON,e);}// JS 值 → JSON 字符串发给后端 / localStorage / WebSocketconstobj{name:小红,age:20,birthday:newDate(2005-01-01),// 注意sayHi:()console.log(hi)// 注意};constjsonJSON.stringify(obj,null,2);// 带缩进便于调试console.log(json);/* 输出 { name: 小红, age: 20, birthday: 2005-01-01T00:00:00.000Z // Date 被转成 ISO 字符串 } */// 第二个参数 replacer过滤/转换JSON.stringify(obj,[name,age]);// 只保留 name 和 ageJSON.stringify(obj,(k,v)ksayHi?undefined:v);// 去掉函数// 第三个参数 space缩进空格数或字符串JSON.stringify(obj,null,4);// 4个空格JSON.stringify(obj,null,\t);// Tab前端高频场景fetch / axios 响应.json()→ 自动 parselocalStorage.setItem(‘user’, JSON.stringify(user))WebSocket / SSE / GraphQL 响应基本都是 JSON4. 后端必会JSON 的序列化/反序列化各语言对比语言序列化对象→字符串反序列化字符串→对象常用库 / 注意点Node.jsJSON.stringify()JSON.parse()原生性能好Pythonjson.dumps(obj, ensure_asciiFalse)json.loads(s)默认 ascii 转义中文加 ensure_asciiFalseGojson.Marshal(v)json.Unmarshal(data, v)结构体字段需json:field_nametagJavaJackson / Gson / Fastjson同上Spring Boot 默认 JacksonC#JsonSerializer.Serialize(obj)JsonSerializer.DeserializeT(json)System.Text.Json.NET Core或 Newtonsoft后端常见坑大数字精度丢失JS Number 是 IEEE 754 双精度超过 2⁵³-1 就丢精度→ 用字符串传 ID时区问题Date 序列化后是 UTC接收端要小心循环引用obj.self obj→ stringify 直接报错二进制/文件JSON 不适合改用 base64 或 multipart5. 高级 最佳实践2026年真实项目级别JSON Schema强烈推荐描述 JSON 的结构像 TypeScript 接口用 ajv / zodJS、pydanticPython校验OpenAPI / FastAPI / tRPC 都在用大 JSON 优化压缩Gzip / BrotliHTTP 层精简字段后端只返回前端需要的字段GraphQL 就是为此而生分页 / 流式传输大模型 response 常用安全永远不要直接把用户输入当 JSON 拼接XSS / JSONP 劫持后端反序列化时校验类型和范围避免返回敏感字段password、token现代替代/补充了解但不取代 JSONJSON5允许单引号、尾逗号、无引号键、注释配置文件常用TOML / YAML更适合人类写配置Protocol Buffers / Avro / MessagePack性能敏感场景gRPC6. 练习题建议全部手写验证写一个合法 JSON包含嵌套对象 数组 中文 转义字符把下面非法字符串改成合法 JSON{name: 王五, age: 25,}用 JS 实现一个函数把任意对象安全转为 JSON过滤函数、undefined、循环引用后端视角设计一个 User 接口的 JSON Schema包含必填/选填、枚举、格式校验掌握 JSON 后你会发现90% 的前后端协作、本地调试、API 联调其实就是在和 JSON 打交道。有哪一部分想再深入比如 JSON Schema 实战、Go/Python 具体代码、常见大厂面试 JSON 题