JavaScript 中的 JSON

JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,常用于客户端和服务器之间的数据传输。它以文本格式存储和表示数据,易于人类阅读和编写,同时也易于机器解析和生成。

1. JSON格式

JSON 是一种键值对的集合,通常有两种数据结构:

  • 对象:由一对花括号 {} 包含,内部是多个键值对(key-value pairs)。键必须是字符串,值可以是任何数据类型(字符串、数字、对象、数组等)。
  • 数组:由一对中括号 [] 包含,里面可以包含多个值,值之间用逗号 , 分隔。

示例:

{
  "name": "John",
  "age": 30,
  "isStudent": false,
  "courses": ["Math", "Science"],
  "address": {
    "street": "123 Main St",
    "city": "New York"
  }
}

2. JavaScript中的JSON操作

2.1 将JavaScript对象转换为JSON字符串

可以使用 JSON.stringify() 方法将 JavaScript 对象转换为 JSON 字符串。

const person = {
  name: "John",
  age: 30,
  isStudent: false,
  courses: ["Math", "Science"],
  address: {
    street: "123 Main St",
    city: "New York"
  }
};

const jsonString = JSON.stringify(person);
console.log(jsonString);

输出

{"name":"John","age":30,"isStudent":false,"courses":["Math","Science"],"address":{"street":"123 Main St","city":"New York"}}

2.2 将JSON字符串转换为JavaScript对象

可以使用 JSON.parse() 方法将 JSON 字符串转换回 JavaScript 对象。

const jsonString = '{"name":"John","age":30,"isStudent":false,"courses":["Math","Science"],"address":{"street":"123 Main St","city":"New York"}}';
const person = JSON.parse(jsonString);
console.log(person);

输出

{
  name: "John",
  age: 30,
  isStudent: false,
  courses: ["Math", "Science"],
  address: { street: "123 Main St", city: "New York" }
}

2.3 处理JSON数据

JSON常用于处理从服务器获取的数据,通常通过 fetch 或 XMLHttpRequest 获取JSON格式的数据。以下是通过 fetch 获取和解析JSON数据的示例:

fetch('https://api.example.com/data')
  .then(response => response.json()) // 解析JSON响应
  .then(data => {
    console.log(data);
  })
  .catch(error => {
    console.log('Error:', error);
  });

3. JSON的常见用途

  • 客户端与服务器之间的数据传输:JSON常用于Web API和前后端数据交换。
  • 本地存储:可以将数据存储为JSON字符串,并保存在浏览器的localStorage或sessionStorage中。
  • 配置文件:JSON常用于应用程序的配置文件中,例如package.json等。

4. JSON的注意事项

  • 键必须是字符串:JSON中的键必须是字符串,不能是数字或其他类型。
  • 不支持函数:JSON数据格式不支持函数和其他一些特殊类型(如 undefined)。
  • 严格的格式要求:JSON对格式有严格要求,比如键值对之间必须用逗号分隔,字符串必须用双引号括起来。

5. JSON与JavaScript对象的区别

  • JSON 是一种数据格式,通常用于数据交换和存储。
  • JavaScript对象 是一种数据结构,包含键值对,并且可以包含方法、函数等。JSON则只能包含数据。

如果你有具体的应用场景或进一步的问题,随时可以提问!