阿杰,我来给你做一份 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;
});
发表回复