阿杰,我来给你做一份 JavaScript JSON(JavaScript Object Notation)详解 + 代码示例。
1. JSON 是什么?
- JSON 是一种轻量级的数据交换格式,全称 JavaScript Object Notation。
 - 本质上是一个 字符串,格式类似 JavaScript 对象,但属性名必须用双引号。
 - 语言无关(JavaScript、Python、Java 等都支持)。
 
2. JSON 的基本规则
- 数据是 键值对:
"key": value - 键必须用 双引号 包裹。
 - 值可以是:
- 字符串 
"hello" - 数字 
123 - 布尔值 
true / false null- 数组 
[1,2,3] - 对象 
{"a":1,"b":2} 
 - 字符串 
 
示例:
{
  "name": "阿杰",
  "age": 25,
  "isStudent": false,
  "skills": ["JavaScript", "Python", "MySQL"],
  "address": {
    "city": "Shenzhen",
    "zip": "518000"
  }
}
3. JavaScript 中 JSON 的使用
(1) 对象 → JSON 字符串
const obj = {
  name: "阿杰",
  age: 25,
  skills: ["JavaScript", "Python"]
};
const jsonStr = JSON.stringify(obj);
console.log(jsonStr);
// 输出: {"name":"阿杰","age":25,"skills":["JavaScript","Python"]}
JSON.stringify(obj, null, 2)可以格式化输出(缩进 2 个空格)。
(2) JSON 字符串 → 对象
const jsonStr = '{"name":"阿杰","age":25,"skills":["JavaScript","Python"]}';
const obj = JSON.parse(jsonStr);
console.log(obj.name);  // 阿杰
console.log(obj.skills[1]);  // Python
(3) 带错误处理的解析
const badJson = '{"name": "阿杰", "age": }';
try {
  const obj = JSON.parse(badJson);
} catch (err) {
  console.error("JSON 解析失败:", err.message);
}
4. 常见用途
- 前后端数据交互(REST API / Ajax / Fetch): 
fetch("/api/user") .then(res => res.json()) .then(data => console.log("用户数据:", data)); - 本地存储(localStorage 只能存字符串): 
const user = { name: "阿杰", age: 25 }; localStorage.setItem("user", JSON.stringify(user)); const saved = JSON.parse(localStorage.getItem("user")); console.log(saved.name); // 阿杰 - 配置文件:常见于 
package.json、tsconfig.json。 
5. JSON vs JavaScript 对象区别
| 特性 | JSON | JS 对象 | 
|---|---|---|
| 引号要求 | key 必须双引号 | key 可不加引号 | 
| 值类型限制 | 不能有函数、undefined | 可以有函数、Symbol | 
| 存在形式 | 字符串 | 内存对象 | 
| 用途 | 数据交换 | 运行时操作 | 
示例:
// JS 对象
const obj = {name: "阿杰", sayHi: () => console.log("Hi")};
// JSON (字符串)
const jsonStr = '{"name":"阿杰"}';
好的,阿杰,我帮你整理了一份 JavaScript JSON 速查表(Cheat Sheet),包括基本概念、常用方法、示例代码和注意事项,方便直接查阅。
JavaScript JSON 速查表(Cheat Sheet)
1. JSON 基础概念
- 全称:JavaScript Object Notation
 - 用途:轻量级数据交换格式
 - 数据类型:
- 字符串 
"text" - 数字 
123 - 布尔值 
true / false null- 数组 
[1,2,3] - 对象 
{"key": "value"} 
 - 字符串 
 
2. JSON 与 JS 对象的区别
| 特性 | JSON | JS 对象 | 
|---|---|---|
| 键名 | 必须双引号 | 可以不加引号 | 
| 值类型 | 不允许函数、Symbol、undefined | 可包含函数、Symbol | 
| 数据形式 | 字符串 | 内存对象 | 
| 用途 | 数据交换 | 程序运行 | 
示例:
// JS 对象
const obj = { name: "阿杰", greet: () => "Hi" };
// JSON
const jsonStr = '{"name":"阿杰"}';
3. JSON 核心方法
3.1 对象 → JSON 字符串
const obj = { name: "阿杰", age: 25 };
const jsonStr = JSON.stringify(obj);
console.log(jsonStr); // {"name":"阿杰","age":25}
// 格式化输出
console.log(JSON.stringify(obj, null, 2));
3.2 JSON 字符串 → 对象
const jsonStr = '{"name":"阿杰","age":25}';
const obj = JSON.parse(jsonStr);
console.log(obj.name); // 阿杰
3.3 带错误处理
try {
  const obj = JSON.parse('{"name": "阿杰", "age": }');
} catch (err) {
  console.error("JSON 解析失败:", err.message);
}
4. 常用应用场景
4.1 前后端数据交互
fetch("/api/user")
  .then(res => res.json())
  .then(data => console.log("用户数据:", data));
4.2 本地存储
const user = { name: "阿杰", age: 25 };
localStorage.setItem("user", JSON.stringify(user));
const savedUser = JSON.parse(localStorage.getItem("user"));
console.log(savedUser.name); // 阿杰
4.3 配置文件
- 常见于:
package.json、tsconfig.json等 - JSON 文件必须严格遵守语法(双引号 + 无注释)
 
5. 注意事项
- 键名必须用双引号
 - 不能包含函数、undefined、Symbol
 JSON.stringify不序列化循环引用,会抛出错误- JSON.parse 会把数字、布尔、null 正确转换,但不会自动解析日期,需要手动处理
 
// 日期解析示例
const obj = JSON.parse('{"date":"2025-09-19T16:00:00Z"}');
const date = new Date(obj.date);
console.log(date.toISOString());
6. 小技巧
- 美化 JSON:
 
console.log(JSON.stringify(obj, null, 4)); // 缩进 4 空格
- 过滤属性:
 
JSON.stringify(obj, ["name"]); // 只输出 name 属性
- 自定义转换:
 
JSON.stringify(obj, (key, value) => {
  if (typeof value === "number") return value * 2;
  return value;
});
发表回复