JavaScript JSON
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,基于文本,并且易于人类读取和编写,也易于机器解析和生成。JSON 是与语言无关的,但它的语法由 JavaScript 的对象表示法衍生出来。
1. JSON 基本格式
JSON 的数据结构是键值对形式的集合,这与 JavaScript 中的对象非常相似。JSON 的数据是由 {}
包裹的键值对组成。键(Key)必须是字符串类型,值(Value)可以是字符串、数字、对象、数组、布尔值或 null
。
示例:
{
"name": "Alice",
"age": 25,
"isStudent": false,
"address": {
"street": "123 Main St",
"city": "Wonderland"
},
"phoneNumbers": ["123-456-7890", "987-654-3210"]
}
2. JSON 数据类型
JSON 支持以下数据类型:
- 字符串(String): 由双引号括起来的字符序列。
- 数字(Number): 无需引号的数字,可以是整数或浮动数字。
- 对象(Object): 键值对的集合,键必须是字符串。
- 数组(Array): 有序的值列表,值可以是任意数据类型。
- 布尔值(Boolean):
true
或false
。 null
: 表示空值或无效的值。
3. JSON 与 JavaScript 对象的区别
- 键: JSON 中的键必须是双引号括起来的字符串,而 JavaScript 对象中的键可以是未加引号的标识符(如果符合标识符规则)。
- 值: JSON 中的值只能是字符串、数字、对象、数组、布尔值或
null
,而 JavaScript 对象中的值可以是任何有效的 JavaScript 数据类型,包括函数。
示例:
// JSON 示例
{
"name": "Alice",
"age": 25
}
// JavaScript 对象示例
let person = {
name: "Alice", // 键不需要引号
age: 25
};
4. JavaScript 中的 JSON 操作
JavaScript 提供了两个主要的全局方法来操作 JSON 数据:
JSON.parse()
:将 JSON 字符串转换为 JavaScript 对象。JSON.stringify()
:将 JavaScript 对象转换为 JSON 字符串。
JSON.parse()
JSON.parse()
方法将一个有效的 JSON 字符串转换为 JavaScript 对象。
示例:
const jsonString = '{"name": "Alice", "age": 25}';
const person = JSON.parse(jsonString);
console.log(person); // 输出 { name: "Alice", age: 25 }
JSON.stringify()
JSON.stringify()
方法将一个 JavaScript 对象转换为 JSON 字符串。
示例:
const person = { name: "Alice", age: 25 };
const jsonString = JSON.stringify(person);
console.log(jsonString); // 输出 '{"name":"Alice","age":25}'
5. JSON 与 Ajax
JSON 是一种常见的数据交换格式,经常与 Ajax(异步 JavaScript 和 XML)一起使用。在客户端和服务器之间传输数据时,JSON 格式通常被用来提高数据传输的效率和可读性。
示例:
// 假设从服务器获取 JSON 数据
const xhr = new XMLHttpRequest();
xhr.open("GET", "/data.json", true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
const data = JSON.parse(xhr.responseText);
console.log(data); // 输出从服务器获取的 JSON 对象
}
};
xhr.send();
6. JSON 常见问题
- JSON 格式错误: JSON 字符串必须严格符合格式要求,例如,键必须用双引号括起来,不能有尾随的逗号等。
- 循环引用: 在将对象转为 JSON 字符串时,不能包含循环引用,否则会导致
TypeError
。
示例:
const obj = { name: "Alice" };
obj.self = obj; // 引入循环引用
const jsonString = JSON.stringify(obj); // 会抛出 TypeError: Converting circular structure to JSON
总结
- JSON 是一种轻量级的数据交换格式,广泛应用于 Web 开发中。
- 使用
JSON.parse()
可以将 JSON 字符串转换为 JavaScript 对象,使用JSON.stringify()
可以将 JavaScript 对象转换为 JSON 字符串。 - JSON 数据由键值对组成,支持字符串、数字、布尔值、对象、数组和
null
等数据类型。
理解 JSON 的语法和操作方法可以帮助你有效地处理数据交换和存储。更多详细内容请关注其他相关文章。