JavaScript JSON

JavaScript JSON知识点汇总

JavaScript JSON知识点汇总

编程小白也能看懂的JSON详细指南,包含基础概念、使用方法和实际示例

1. 什么是JSON?

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它基于JavaScript的一个子集,但完全独立于编程语言。

💡 简单理解:JSON是一种用于存储和传输数据的文本格式,就像快递单一样,让不同系统之间可以轻松传递数据。

JSON的主要特点:

  • 易于人阅读和编写
  • 易于机器解析和生成
  • 完全独立于语言(几乎所有编程语言都支持JSON)
  • 通常用于Web应用中服务器和客户端之间的数据交换

为什么需要JSON?

在Web开发中,浏览器(客户端)和服务器需要交换数据。JSON提供了一种简单、标准化的格式,使得数据交换变得简单高效。

2. JSON的基本结构

JSON数据由两种基本结构组成:

对象(Object)

用花括号{}包裹,包含多个键值对(key: value pairs)。键必须是字符串,值可以是JSON支持的任何数据类型。

{
    "name": "张三",
    "age": 28,
    "isStudent": false,
    "hobbies": ["读书", "旅行", "摄影"],
    "address": {
        "city": "北京",
        "street": "朝阳路"
    }
}

数组(Array)

用方括号[]包裹,包含多个值(可以是不同类型),值之间用逗号分隔。

[
    "苹果",
    "香蕉",
    "橙子",
    123,
    true,
    null
]

📌 重要规则:

  • 键名必须用双引号包裹(单引号无效)
  • 字符串值必须用双引号包裹
  • 最后一个元素后面不能有逗号

3. JSON支持的数据类型

字符串(String)

"Hello, World!"

必须用双引号包裹

数字(Number)

45
3.14
-10

整数、小数、负数都可以

布尔值(Boolean)

true
false

只有这两个值

空值(null)

null

表示空值

对象(Object)

{"name": "李四", "age": 30}

键值对集合

数组(Array)

[1, 2, "three", true]

有序的值列表

🚫 JSON不支持的类型:函数(function)、日期(Date)、undefined等,这些类型在转换时会丢失或被处理为null。

4. 在JavaScript中使用JSON

JavaScript提供了两个处理JSON的核心方法:

JSON.parse() – 解析JSON字符串

将JSON字符串转换为JavaScript对象(从字符串到对象)

const jsonString = '{"name": "王五", "age": 25}';
const person = JSON.parse(jsonString);

console.log(person.name); // 输出: 王五
console.log(person.age);  // 输出: 25

JSON.stringify() – 转换为JSON字符串

将JavaScript对象转换为JSON字符串(从对象到字符串)

const personObj = {
    name: "赵六",
    age: 32,
    isEmployed: true
};

const jsonStr = JSON.stringify(personObj);
console.log(jsonStr); 
// 输出: {"name":"赵六","age":32,"isEmployed":true}

🔍 实用技巧:

  • JSON.stringify()可以接受两个额外参数:replacer函数(转换结果)和space(缩进空格数)
  • 使用JSON.parse(JSON.stringify(obj))可以创建对象的深拷贝

5. 常见错误和注意事项

常见错误:

  • SyntaxError: Unexpected token – JSON格式错误(如缺少逗号、引号)
  • TypeError: Converting circular structure to JSON – 对象存在循环引用
  • 使用单引号而不是双引号
  • 最后一个属性后面多了一个逗号

注意事项:

  • JSON.stringify()会忽略函数和undefined属性
  • 日期对象会被转换为ISO格式的字符串
  • JSON不支持注释(在JSON中添加注释会报错)
  • JSON文件通常以.json作为扩展名

✅ 最佳实践:

  • 使用JSON验证工具(如JSONLint)检查JSON格式
  • 在AJAX请求中,使用JSON作为数据交换格式
  • 在复杂应用中使用try-catch处理JSON解析错误

6. JSON实际应用场景

🌐 AJAX请求

从服务器获取数据:

fetch('https://api.example.com/data')
  .then(response => response.json())
  .then(data => console.log(data));

📝 配置文件

存储应用配置:

// config.json
{
    "apiUrl": "https://api.example.com",
    "maxItems": 50,
    "features": {
        "darkMode": true,
        "notifications": false
    }
}

💾 本地存储

在浏览器中存储数据:

// 存储
const userSettings = { theme: 'dark', fontSize: 16 };
localStorage.setItem('settings', 
    JSON.stringify(userSettings));

// 读取
const settings = JSON.parse(
    localStorage.getItem('settings'));

📤 API通信

发送数据到服务器:

const newUser = {
    name: '钱七',
    email: 'qian@example.com'
};

fetch('https://api.example.com/users', {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json'
    },
    body: JSON.stringify(newUser)
});

7. JSON与其他数据格式

了解JSON与其他常见数据格式的关系:

JSON vs XML

JSON更轻量、更易读:

// JSON
{"person": {"name": "张三", "age": 30}}

// XML
<person>
  <name>张三</name>
  <age>30</age>
</person>

JSON vs JavaScript对象

JSON是字符串,JS对象是数据结构:

// JSON字符串(文本)
'{"name": "李四"}'

// JavaScript对象(数据结构)
{ name: "李四" }

总结:JSON核心要点

键必须用双引号 字符串值用双引号 不支持注释 JSON.parse() 解析 JSON.stringify() 转换 数据交换格式 轻量级 跨语言 键值对结构

🎓 学习建议:

  • 熟练掌握JSON.parse()和JSON.stringify()的使用
  • 使用在线JSON验证工具检查你的JSON格式
  • 在Chrome开发者工具中练习JSON的解析和序列化
  • 尝试创建自己的JSON配置文件并在项目中读取

JavaScript JSON知识点汇总 | 编程小白入门指南 | 在实际项目中多多练习才能掌握

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部