JSON.stringify和JSON.parse方法的使用

本文详细解析了JSON.stringify与JSON.parse在前后端数据交换中的应用,特别是当后端使用@RequestBody注解接收参数时,如何正确地进行数据格式转换。探讨了在不同场景下,如单个对象或多个参数传递时,前端如何调整数据发送格式以确保后端能正确接收。

JSON.stringify作用:

JSON.stringify(param);将param参数字符串转换成JSON对象。

JSON.parse作用:

JSON.parse(param);将paramJSON对象转换成参数字符串。

 

  • 如果后台使用@RequestBody注解接收参数。

而请求数据格式如下:

则需使用JSON.stringify()方法将请求参数转换成对象。

  • 如果后端接收前端传入对象时,后端接收方法有多个参数

前端请求数据如上,如图带大括号的为JSON格式对象。

所以如果请求数据为JSON对象,则需要在后端响应方法中给相应的接收数据对象的参数添加@RequestBody注解,如需要接收User属性值

就在User前加上@RequestBody注解即可,但是@RequestBody只能注入一个对象,所以注入user对象后,后一个参数id无法接收。

所以如果在一个方法中接收了多个参数,则不能使用@RequestBody注解,而是需要在前端把请求数据由JSON对象转换为参数字符串,则需在前端使用JSON.parse()方法将原来的对象转换成JSON字符串传入,后端才可接收。

 

在 JavaScript 中,`JSON.stringify` `JSON.parse` 是两个用于数据转换的核心方法,它们经常被一起使用以实现数据的序列化反序列化。 `JSON.stringify` 用于将 JavaScript 对象转换为 JSON 字符串。这个过程通常用于数据传输,例如在客户端服务器之间发送数据。如果对象中存在函数或 `undefined` 值,它们会被忽略或转换为 `null` [^3]。 ```javascript let userObj = { name: "Sammy", email: "sammy@example.com", plan: "Pro" }; let userStr = JSON.stringify(userObj); console.log(userStr); // 输出: {"name":"Sammy","email":"sammy@example.com","plan":"Pro"} ``` 另一方面,`JSON.parse` 用于将 JSON 字符串解析成 JavaScript 对象。这对于从服务器接收的数据特别有用,可以轻松地将其转换回可操作的对象形式 [^2]。 ```javascript let userStr = '{"name":"Sammy","email":"sammy@example.com","plan":"Pro"}'; let userObj = JSON.parse(userStr); console.log(userObj); // 输出: { name: "Sammy", email: "sammy@example.com", plan: "Pro" } ``` 当这两个方法一起使用时,可以实现对象的深拷贝。这意味着原始对象的任何更改都不会影响到拷贝后的对象,因为它们指向不同的内存地址。 ```javascript let original = { data: [1, 2, 3] }; let copy = JSON.parse(JSON.stringify(original)); original.data.push(4); console.log(copy); // 输出: { data: [1, 2, 3] } console.log(original); // 输出: { data: [1, 2, 3, 4] } ``` 需要注意的是,这种方法有其局限性。例如,它不能处理函数、`undefined` 值以及循环引用等复杂数据结构。此外,日期对象会被转换为字符串,而不是保留其 `Date` 对象的形式 [^1]。 ### 使用场景 - **数据传输**:当需要通过网络发送数据时,通常使用 `JSON.stringify` 将数据转换为字符串格式,以便于传输。 - **数据存储**:保存数据到本地存储时,可以先使用 `JSON.stringify` 将数据转换为字符串。 - **数据恢复**:从服务器或本地存储读取数据后,使用 `JSON.parse` 将字符串转换回 JavaScript 对象,以便于操作 [^4]。 ### 注意事项 - **数据类型限制**:`JSON.stringify` 无法正确处理函数、`undefined` 特殊对象(如 `Date`、`RegExp`)。 - **循环引用**:如果对象中存在循环引用,`JSON.stringify` 会抛出错误。 - **安全性**:使用 `JSON.parse` 解析来自不可信来源的字符串可能存在安全风险,应当谨慎处理 [^1]。 综上所述,`JSON.stringify` `JSON.parse` 是处理 JSON 数据不可或缺的工具,但在使用时需要注意它们各自的限制特点。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值