JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成,它基于JavaScript的一个子集,标准 ECMA-262 第三版 - 1999 年 12 月,JSON 与 JavaScript 的关系,类似于 XML 与 HTML 的关系,JSON 解析器和 JSON 库的实现语言无关,它们可以用任何语言来实现。

JSON 对象用于存储数据,它由键值对组成,键是字符串类型,值可以是字符串、数字、布尔值、数组、对象等,JSON 对象可以通过点符号(.)或方括号([])语法访问它的属性。

以下是一些获取 JSON 对象内容的方法:

1、使用点符号(.):JSON 对象的属性名是有效的标识符,可以使用点符号访问其属性值。

let jsonObj = { "name": "Alice", "age": 25 };
console.log(jsonObj.name); // 输出:Alice
console.log(jsonObj.age);  // 输出:25

2、使用方括号([]):JSON 对象的属性名不是有效的标识符,或者属性名中包含空格或特殊字符,可以使用方括号访问其属性值。

let jsonObj = { "first name": "Bob", "last-name": "Smith" };
console.log(jsonObj["first name"]); // 输出:Bob
console.log(jsonObj["last-name"]);  // 输出:Smith

3、使用 for...in 循环遍历 JSON 对象的所有属性:

let jsonObj = { "name": "Charlie", "age": 30, "country": "USA" };
for (let key in jsonObj) {
  console.log(key + ": " + jsonObj[key]);
}
// 输出:
// name: Charlie
// age: 30
// country: USA

4、使用 Object.keys() 方法获取 JSON 对象的所有键,然后遍历这些键:

let jsonObj = { "name": "David", "age": 35, "city": "New York" };
Object.keys(jsonObj).forEach(function(key) {
  console.log(key + ": " + jsonObj[key]);
});
// 输出:
// name: David
// age: 35
// city: New York

5、使用 JSON.parse() 方法将 JSON 字符串解析为 JSON 对象,然后访问其属性值:

let jsonString = '{"name": "Eve", "age": 28, "job": "Developer"}';
let jsonObj = JSON.parse(jsonString);
console.log(jsonObj.name); // 输出:Eve
console.log(jsonObj.age);  // 输出:28
console.log(jsonObj.job);  // 输出:Developer

常见问题解答:

Q1: 如何判断一个变量是否是 JSON 对象?

A1: 可以使用 typeof 操作符来判断一个变量是否是 JSON 对象,如果变量是 JSON 对象,typeof 操作符会返回 "object"

let jsonObj = { "name": "Frank" };
console.log(typeof jsonObj); // 输出:"object"

Q2: 如何修改 JSON 对象的属性值?

A2: 可以使用点符号(.)或方括号([])语法来修改 JSON 对象的属性值。

let jsonObj = { "name": "Grace", "age": 22 };
jsonObj.name = "Helen"; // 使用点符号修改属性值
jsonObj["age"] = 23;   // 使用方括号修改属性值
console.log(jsonObj);  // 输出:{ name: 'Helen', age: 23 }

Q3: 如何删除 JSON 对象的属性?

A3: 可以使用 delete 操作符来删除 JSON 对象的属性。

let jsonObj = { "name": "Ian", "age": 29, "country": "Canada" };
delete jsonObj.age; // 删除 "age" 属性
console.log(jsonObj);  // 输出:{ name: 'Ian', country: 'Canada' }