JavaScript 知识量:26 - 101 - 483
JSON可以直接被解析成JavaScript对象。在JavaScript中,可以通过使用JSON.parse()方法将JSON字符串解析为JavaScript对象。JSON.parse() 是 JavaScript 中的一个内置方法,用于将一个 JSON 格式的字符串转换为 JavaScript 对象。
使用 JSON.parse() 方法非常简单,只需要将要解析的 JSON 字符串作为参数传递给该方法即可。例如,假设有以下JSON字符串:
"{"name":"John", "age":30, "city":"New York"}"
使用JSON.parse()方法将其解析为JavaScript对象:
var jsonString = "{\"name\":\"John\", \"age\":30, \"city\":\"New York\"}"; var obj = JSON.parse(jsonString); console.log(obj.name); // 输出 "John" console.log(obj.age); // 输出 30 console.log(obj.city); // 输出 "New York"
通过解析JSON字符串为JavaScript对象,可以更方便地使用和操作其中的数据。
JSON.parse()方法可以接受一个可选的第二个参数,这是一个还原函数(reviver)。这个函数的作用是修改解析过程中生成的对象的属性。
这个函数的参数是一个键和一个值,对于每一个键/值对都会调用一次。这个函数返回一个新的值,如果返回undefined,那么该属性将被删除。如果返回其他值,那么该属性将被替换。
以下是一个简单的例子:
let jsonString = '{"name":"John", "age":30, "city":"New York"}'; let reviver = (key, value) => { if (key === 'name') { return 'Jane'; } return value; } let obj = JSON.parse(jsonString, reviver); console.log(obj); // 输出:{ name: 'Jane', age: 30, city: 'New York' }
在这个例子中,定义了一个还原函数reviver,它将所有的name属性替换为'Jane'。使用JSON.parse()方法解析JSON字符串时,将这个函数作为第二个参数传入。结果对象中所有的name属性都被替换为'Jane'。
JSON的序列化(Serialization)是指将JavaScript对象转换为JSON格式的过程。这通常是通过使用JSON.stringify()方法来完成的。
JSON.stringify()方法接收一个JavaScript对象或值,然后返回一个JSON格式的字符串。例如:
var obj = { name: "John", age: 30, city: "New York" }; var jsonString = JSON.stringify(obj); console.log(jsonString); // 输出:{"name":"John","age":30,"city":"New York"}
在这个例子中,有一个JavaScript对象obj,它包含属性name、age和city。使用JSON.stringify()方法将其转换为JSON格式的字符串,并将结果存储在jsonString变量中。然后打印出这个字符串,结果是:{"name":"John","age":30,"city":"New York"}。
JSON.stringify()方法接收的参数不止一个要序列化的对象。以下是JSON.stringify()方法的基本语法:
JSON.stringify(value, replacer, space)
参数说明:
value: 必需。需要序列化的值。
replacer: 可选。一个过滤器,可以是数组或函数。它将在序列化过程中,用于过滤对象的所有属性。如果该参数是一个数组,那么它应该包含一个按需过滤的属性名称的数组。如果该参数是一个函数,那么该函数应该返回被过滤的属性名称的值。
space: 可选。一个字符串或数字,用作缩进。如果它是一个字符串,它将被用作每个级别的空格。如果它是一个数字,那么空格的数量将等于这个数字。如果它被省略,那么输出将不包含任何空格或换行符。
示例如下:
let obj = { name: "John", age: 30, city: "New York" }; let replacer = function(key, value) { if (typeof value === 'string') { return value.toUpperCase(); } else { return value; } }; let jsonString = JSON.stringify(obj, replacer, 4); console.log(jsonString); // 输出:{ "name": "JOHN", "age": 30, "city": "NEW YORK" }
在这个例子中,定义了一个过滤器replacer,它把所有字符串属性的值转换为大写。然后使用JSON.stringify()方法将对象obj序列化为JSON字符串,并使用过滤器以及缩进选项4。结果字符串中的所有字符串都被转换为大写,并且每个级别的属性之间有四个空格的缩进。
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6