JSON是一种轻量级数据交换格式,语法源自JavaScript对象字面量,支持字符串(双引号)、数字、布尔值、null、数组和对象;JS中用JSON.parse()解析、JSON.stringify()序列化,需注意类型限制与安全规范。

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,语法简洁、易读易写,且被几乎所有主流编程语言支持。它不是 JavaScript 的专属格式,但它的语法直接源自 JavaScript 的对象字面量,因此在 JS 中解析和生成 JSON 特别自然、高效。
JSON 长什么样?
JSON 由键值对组成,只支持以下数据类型:
- 字符串(必须用双引号,单引号不合法)
- 数字(整数或浮点数)
- 布尔值(true 或 false)
- null
- 数组(方括号包裹,逗号分隔)
- 对象(花括号包裹,键必须是双引号字符串)
例如:
{"name": "张三", "age": 28, "hobbies": ["读书", "游泳"], "isStudent": false}
立即学习“Java免费学习笔记(深入)”;
JavaScript 如何解析 JSON 字符串?
使用 JSON.parse() 将符合规范的 JSON 字符串转为 JS 值(对象或数组):
- 成功时返回对应 JS 数据结构;失败时抛出 SyntaxError(比如多逗号、单引号、尾随逗号、undefined)
- 可选第二个参数 reviver 函数,用于在解析过程中过滤或转换值
示例:
本文档主要讲述的是用Apache Spark进行大数据处理——第一部分:入门介绍;Apache Spark是一个围绕速度、易用性和复杂分析构建的大数据处理框架。最初在2009年由加州大学伯克利分校的AMPLab开发,并于2010年成为Apache的开源项目之一。 在这个Apache Spark文章系列的第一部分中,我们将了解到什么是Spark,它与典型的MapReduce解决方案的比较以及它如何为大数据处理提供了一套完整的工具。希望本文档会给有需要的朋友带来帮助;感
const data = JSON.parse('{"score": 95.5, "tags": ["js", "json"]}');
console.log(data.score); // 95.5
JavaScript 如何生成 JSON 字符串?
使用 JSON.stringify() 把 JS 值(对象、数组等)序列化为 JSON 字符串:
- 只处理可序列化的属性:忽略函数、undefined、Symbol、循环引用会报错
- 可选第二个参数 replacer(数组或函数),控制哪些属性被包含
- 可选第三个参数 space(数字或字符串),用于美化缩进(如 2 或 " ")
示例:
const user = { name: "李四", age: 30, city: undefined };
console.log(JSON.stringify(user)); // {"name":"李四","age":30}
// 注意:city 被自动忽略
常见坑与注意事项
JSON 和 JS 对象不完全等价,容易出错的地方包括:
- JSON 键名必须用双引号;JS 对象可以省略或用单引号(但那不是 JSON)
- Date 对象、RegExp、Map、Set、函数等无法直接 JSON 序列化,需手动转换(如 date.toISOString())
- 后端返回的 JSON 响应体需先用 response.json()(fetch)或 JSON.parse(xhr.responseText) 解析
- 不要用 eval() 或构造函数解析 JSON——极不安全,且已淘汰









