JSON 支持以下 6 种数据类型:
| 类型 | 说明 | 示例 |
|---|---|---|
| String (字符串) | 必须使用双引号 | "Hello World" |
| Number (数字) | 整数或浮点数 | 123, 3.14 |
| Boolean (布尔值) | true 或 false | true, false |
| Null (空值) | 表示空值 | null |
| Object (对象) | 花括号包裹的键值对 | { "key": "value" } |
| Array (数组) | 方括号包裹的值列表 | [1, 2, 3] |
JSON 构建于两种结构:
{} 表示[] 表示| 特性 | JSON | JavaScript 对象 |
|---|---|---|
| 键名引号 | 必须用双引号 "key" |
可以不用引号 key |
| 字符串引号 | 只能用双引号 "value" |
单引号或双引号都可以 |
| 尾随逗号 | 不允许 | 允许(ES5+) |
| 注释 | 不支持 | 支持 |
| undefined | 不支持 | 支持 |
| 函数/方法 | 不支持 | 支持 |
| NaN, Infinity | 不支持 | 支持 |
| 前导零 | 不允许(如 007) | 允许 |
{
"name": "张三",
"age": 25,
"isStudent": false,
"hobbies": ["reading", "coding"],
"address": {
"city": "北京",
"zip": "100000"
}
}
{
name: "张三", // ❌ 键名必须用双引号
'age': 25, // ❌ 不能用单引号
"score": NaN, // ❌ JSON 不支持 NaN
"func": function() {}, // ❌ JSON 不支持函数
"data": undefined, // ❌ JSON 不支持 undefined
"number": 007, // ❌ 不能有前导零
"items": [1, 2, 3,], // ❌ 不能有尾随逗号
// 这是注释 // ❌ JSON 不支持注释
}
在 JavaScript 中,可以使用以下方法进行转换:
// JavaScript 对象转 JSON 字符串 const obj = { name: "李四", age: 30 }; const jsonString = JSON.stringify(obj); console.log(jsonString); // '{"name":"李四","age":30}' // JSON 字符串转 JavaScript 对象 const jsonStr = '{"name":"王五","age":28}'; const parsedObj = JSON.parse(jsonStr); console.log(parsedObj.name); // "王五"
JSON 最常见的用途是在 Web 应用中作为 API 的数据格式:
// API 返回的用户数据 { "code": 200, "message": "success", "data": { "userId": "U123456", "username": "zhangsan", "email": "zhangsan@example.com", "profile": { "avatar": "https://example.com/avatar.jpg", "bio": "Full Stack Developer" }, "createdAt": "2024-01-15T08:30:00Z" } }
许多应用使用 JSON 作为配置文件格式:
// package.json 示例 { "name": "my-project", "version": "1.0.0", "description": "My awesome project", "main": "index.js", "scripts": { "start": "node index.js", "test": "jest" }, "dependencies": { "express": "^4.18.0", "axios": "^1.4.0" } }
在 AI 智能体开发中,JSON 常用于:
// AI 智能体配置示例 { "agent": { "name": "客服助手", "model": "gpt-4", "temperature": 0.7, "maxTokens": 2000 }, "systemPrompt": "你是一个专业的客服助手...", "tools": [ { "name": "searchKnowledgeBase", "description": "搜索知识库", "parameters": { "query": { "type": "string", "required": true } } } ] }
JSON 字符串中特殊字符需要使用反斜杠转义:
{
"path": "C:\\Users\\Documents",
"quote": "他说:\"你好\"",
"newline": "第一行\\n第二行",
"tab": "列1\\t列2"
}
JSON.parse() 而不是 eval() 解析 JSONJSON.stringify() 进行序列化JSON5 是 JSON 的超集,解决了 JSON 的一些限制:
YAML 是另一种流行的数据序列化格式,更适合配置文件: