当前位置: 首页 > news >正文

从零吃透JSON:前端/后端必学的轻量级数据交换神器

JSON(JavaScript 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""中""\" \\ \n"string必须双引号,单引号非法;转义字符必背
数字42-3.141e-10number无八进制/十六进制字面量;NaN/Infinity/undefined 非法
布尔true/falseboolean必须小写,True/False 非法
nullnullnull唯一表示“无值”的方式
数组[][1, "a", true, null]Array有序,可混合类型
对象{}{"name":"张三","age":28}Object无序键值对,键必须双引号

最常见新手错误Top 5(2026年还在犯的)

  1. 写成{'name': '李四'}→ 键用了单引号 → 非法JSON
  2. 最后多一个逗号:{"a":1,}→ 部分老解析器会报错(现代浏览器/Node大多宽容,但不推荐)
  3. 注释:{"id":1 /* 这是ID */}→ JSON标准完全不支持注释
  4. undefinedNaNInfinity直接写 → 非法
  5. 函数、Date、正则、Symbol 等 JS 类型 → 直接 stringify 出来是{}或报错

3. 前端必会:JSON 与 JavaScript 的来回转换

// 字符串 → JS 值(最常用:fetch后解析响应)constjsonStr='{"name":"小明","age":18,"isVip":true,"skills":["JS","React"]}';constdata=JSON.parse(jsonStr);// 成功 → 对象console.log(data.name);// "小明"// 安全版本(防XSS/恶意JSON)try{constsafeData=JSON.parse(untrustedJsonStr);}catch(e){console.error("非法JSON",e);}// JS 值 → JSON 字符串(发给后端 / localStorage / WebSocket)constobj={name:"小红",age:20,birthday:newDate("2005-01-01"),// 注意!sayHi:()=>console.log("hi")// 注意!};constjson=JSON.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)=>k==="sayHi"?undefined:v);// 去掉函数// 第三个参数 space(缩进空格数或字符串)JSON.stringify(obj,null,4);// 4个空格JSON.stringify(obj,null,"\t");// Tab

前端高频场景

  • fetch / axios 响应.json()→ 自动 parse
  • localStorage.setItem(‘user’, JSON.stringify(user))
  • WebSocket / SSE / GraphQL 响应基本都是 JSON

4. 后端必会:JSON 的序列化/反序列化(各语言对比)

语言序列化(对象→字符串)反序列化(字符串→对象)常用库 / 注意点
Node.jsJSON.stringify()JSON.parse()原生,性能好
Pythonjson.dumps(obj, ensure_ascii=False)json.loads(s)默认 ascii 转义中文,加 ensure_ascii=False
Gojson.Marshal(v)json.Unmarshal(data, &v)结构体字段需json:"field_name"tag
JavaJackson / Gson / Fastjson同上Spring Boot 默认 Jackson
C#JsonSerializer.Serialize(obj)JsonSerializer.Deserialize<T>(json)System.Text.Json(.NET Core+)或 Newtonsoft

后端常见坑

  • 大数字精度丢失(JS Number 是 IEEE 754 双精度,超过 2⁵³-1 就丢精度)→ 用字符串传 ID
  • 时区问题:Date 序列化后是 UTC,接收端要小心
  • 循环引用:obj.self = obj→ stringify 直接报错
  • 二进制/文件:JSON 不适合,改用 base64 或 multipart

5. 高级 & 最佳实践(2026年真实项目级别)

  1. JSON Schema(强烈推荐)

    • 描述 JSON 的结构,像 TypeScript 接口
    • 用 ajv / zod(JS)、pydantic(Python)校验
    • OpenAPI / FastAPI / tRPC 都在用
  2. 大 JSON 优化

    • 压缩:Gzip / Brotli(HTTP 层)
    • 精简字段:后端只返回前端需要的字段(GraphQL 就是为此而生)
    • 分页 / 流式传输(大模型 response 常用)
  3. 安全

    • 永远不要直接把用户输入当 JSON 拼接(XSS / JSONP 劫持)
    • 后端反序列化时校验类型和范围
    • 避免返回敏感字段(password、token)
  4. 现代替代/补充(了解但不取代 JSON)

    • JSON5:允许单引号、尾逗号、无引号键、注释(配置文件常用)
    • TOML / YAML:更适合人类写配置
    • Protocol Buffers / Avro / MessagePack:性能敏感场景(gRPC)

6. 练习题(建议全部手写验证)

  1. 写一个合法 JSON:包含嵌套对象 + 数组 + 中文 + 转义字符
  2. 把下面非法字符串改成合法 JSON:{name: '王五', age: 25,}
  3. 用 JS 实现一个函数:把任意对象安全转为 JSON(过滤函数、undefined、循环引用)
  4. 后端视角:设计一个 User 接口的 JSON Schema(包含必填/选填、枚举、格式校验)

掌握 JSON 后,你会发现:90% 的前后端协作、本地调试、API 联调,其实就是在和 JSON 打交道

有哪一部分想再深入?比如 JSON Schema 实战、Go/Python 具体代码、常见大厂面试 JSON 题?

http://www.jsqmd.com/news/397019/

相关文章:

  • 电影《飞驰人生3》迅雷BT完整下载
  • 第三十九篇:分子动力学中的蛋白质折叠模拟
  • 第四十篇:分子动力学中的核酸模拟
  • 鲜花追忆
  • Java线程池:深入理解ThreadPoolExecutor及其参数配置
  • 数据在内存中的存储
  • 互联网大厂求职秘籍:Java小白面试核心技术点全解析
  • Flink 2.0 解耦状态管理(Disaggregated State)ForSt + 异步 State API V2 + SQL Async-State 上手与调优
  • 写一个自动整理聊天记录精华工具,提炼重要信息,颠覆翻记录找半天。
  • 谷歌不淡定了
  • “老东西,你懦弱了”——关于Vibe Coding与传统开发 - Ghost
  • treeNMS-1.7.5部署步骤详解(附Java环境准备与数据库配置)
  • 镜像视界核心技术群白皮书总章——空间计算引擎的技术体系全景与原创突破
  • 激光雷达(LiDAR):信号回波效率【自车能接收到反射激光的比例:10⁻¹⁰量级】【905nm激光脉冲包含10¹³光子,在200米处探测10%反射率目标,最终返到接收器的光子数只有几百~几千个】
  • 香港中巴租赁市场新动态:口碑佳企推荐,婚礼租车/自驾租车/租赁/代驾租车/婚车租赁/商务租车/跨境租车,租赁企业口碑排行 - 品牌推荐师
  • IcePop技术
  • 军储 × 危化联动空间主动封控体系装备论证——基于视频孪生感知网与镜像孪生控制网的三维空间战术级压制系统
  • 视频孪生的时代边界与镜像孪生的空间计算革命
  • 激光雷达(LiDAR)-高速运动的影响03:多普勒效应【绝大多数车载LiDAR采用飞行时间(ToF)原理,通过测量光脉冲的往返时间来计算距离,而非测量光的频率,∴多普勒效应对测距精度影响甚微】
  • 第二章 字符串和文本 上
  • “赛博大佛” Cloudflare(简称 CF)
  • 第二章 字符串和文本 下
  • 激光雷达(LiDAR):发射激光的反射为何能被自身收到【漫反射:多数物体总会将一部分入射光散射回发射源方向】【激光特性:①发散角小,即使经过漫反射,散射回的信号也足够强;②高单色性;③高能量密度】
  • 激光雷达(LiDAR)-高速运动的影响02:畸变【对一帧内所有点去畸变:①GPSIMU(打时间戳)、激光脉冲(打时间戳)⮕时间戳同步⮕坐标系变换(将点从运动中的传感器坐标系转换到固定的世界坐标系)】
  • 网站突然变慢到底是不是“服务器不行”?
  • Claude Code编程经验记录总结-构建项目规约
  • 被忽略的核心!状态转移概率矩阵:马尔可夫链的“人性破局工具”
  • 马尔可夫链的灵魂:状态转移矩阵揭秘
  • 2026年外贸推广国际社媒TikTok推广代运营公司/服务商深度测评榜单:这5家值得重点关注! - 深圳昊客网络
  • 2026年观察:国内AI选果机市场主流厂家技术解析,梨分选机/无损选果机/无损测糖选果机,选果机销售厂家怎么选择 - 品牌推荐师