JSON.parse()与JSON.stringify()有何区别?

本文详细介绍了JSON.parse()和JSON.stringify()在JavaScript中的使用,前者用于将JSON字符串转换为JavaScript对象,后者则将JavaScript对象转化为JSON字符串。在处理数据交换时,这两个方法是关键。此外,需要注意JSON.stringify()在处理Date对象时会将其转换为字符串。

JSON.parse()与JSON.stringify()有何区别?

JSON通常用来与服务端进行数据交换,比较常用的是用来转换对象与数组。

JSON.parse()

JSON.parse() 方法可以将JSON字符串解析为JS对象,传一个JSON字符串作为参数,返回一个JS对象。
示例:

let demo = '{ "name":"shier", "age":12, "sex":"man"}';
let myJson = JSON.parse(demo);
console.log(myJson)
// 结果: {name: 'shier', age: 12, sex: 'man'}

JSON.stringify()

JSON.stringify()方法是将JS对象转换成为JSON字符串,传一个JS对象作为参数。返回一个JSON字符串。
示例:

let demo1 = { "name":"shier", "age":12, "sex":"man"};
let myJson1 = JSON.stringify(demo1);
console.log(myJson1)
// 结果: '{ "name":"shier", "age":12, "sex":"man"}'

tips

需要注意的是:JSON 不能存储 Date 对象,所以JSON.stringify() 转换时会将所有日期转换为字符串。

let demo2 = { "name":"shier", "age":12, "sex":"man", "nowTime": new Date()};
let myJson2 = JSON.stringify(demo2);
console.log(myJson2)
// 结果:{"name":"shier","age":12,"sex":"man","nowTime":"2022-02-16T14:42:42.472Z"}
### 作用区别 `JSON.stringify()` 和 `JSON.parse()` 是 JavaScript 中用于处理 JSON 数据的两个核心方法,它们在功能上是相对的。 `JSON.stringify()` 的作用是将一个 JavaScript 对象或值转换为 JSON 字符串。这种转换通常用于数据传输,例如将对象序列化以便通过网络发送或将数据存储到本地存储中。该方法还允许通过可选参数对序列化过程进行定制,例如使用 `replacer` 函数来过滤或修改结果[^4]。例如: ```javascript var obj = { "name":"Bill Gates", "age":62, "city":"Seattle" }; var myJSON = JSON.stringify(obj); // 结果:'{"name":"Bill Gates","age":62,"city":"Seattle"}' ``` 而 `JSON.parse()` 则执行相反的操作,它将一个 JSON 字符串解析并还原为 JavaScript 对象。这在接收来自服务器、文件或其他来源的 JSON 数据后非常有用,因为字符串形式的数据无法直接操作,必须先解析为对象结构才能使用[^3]。例如: ```javascript var string = '{"name":"Kobe", "state":"USA"}'; var obj = JSON.parse(string); console.log(obj.name); // 输出: "Kobe" ``` 因此,二者的主要区别在于方向性:`JSON.stringify()` 将对象转化为字符串,而 `JSON.parse()` 将字符串还原为对象[^2]。 ### 使用场景对比 - **数据传输存储**:当需要将数据以字符串形式发送或保存时,使用 `JSON.stringify()`;当从服务器接收到字符串数据或从本地存储读取字符串时,则使用 `JSON.parse()` 进行解析[^1]。 - **函数处理**:如果对象中包含函数,`JSON.stringify()` 默认会忽略这些函数,除非手动将函数转换为字符串表示形式。而在解析过程中,`JSON.parse()` 并不会自动恢复这些函数为可执行代码[^2]。 - **数据过滤转换**:`JSON.stringify()` 可以通过 `replacer` 参数控制哪些属性应该被序列化;类似地,`JSON.parse()` 支持 `reviver` 函数,在解析完成后对对象进行进一步处理和变换。 ### 示例对比 以下是一个完整的示例,展示了 `JSON.stringify()` 和 `JSON.parse()` 的配合使用: ```javascript var originalObj = { name: "Alice", age: 25, city: "New York" }; // 序列化为字符串 var str = JSON.stringify(originalObj); console.log(str); // 输出: {"name":"Alice","age":25,"city":"New York"} // 解析回对象 var parsedObj = JSON.parse(str); console.log(parsedObj.name); // 输出: Alice ``` 在这个例子中,原始对象被转换为字符串,然后又被还原为对象,体现了这两个方法的互逆特性[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值