qs.stringify()、JSON.stringify() 区别

之前后台数据接收不到,然后前台数据使用qs.stringify()转换传递就可以了;

然后最近前台JSON.stringify()传递,后台的参数必须加 @RequestBody才可以,我就不想加这个注解,然后查资料总结如下:

一般前端在 jquery 的 ajax 中, contentType都是默认的值:application/x-www-form-urlencoded,只能处理简单的json,复杂的就不行了!!!

1:JSON.stringify()

如果前端使用如下:


var user= {
                "username" : username,
                "password" : password
          };
$.ajax({
/
    contentType: 'application/json; charset=utf-8',
    data: JSON.stringify(user)
})

后端就必须使用:


@RequestMapping("/jsontest")
public void test(@RequestBody User user  ){
    String username = user.getUsername();
    String password = user.getPassword();
}
 
或者
 
@RequestMapping("/jsontest")
public void test(@RequestBody Map map  ){
    String username = map.get("username").toString();
    String password = map.get("password").toString();
}
 
或者
 
 public void test(@RequestBody String jsonData) {
    JSONObject jsonObject = JSON.parseObject(jsonData);
    String username= jsonObject.getString("username");
    String username= jsonObject.getString("password");
}

我们看到的样式就如:"{"username":"username","password":password}"

2:qs.stringify()

前端如下:


var user= {
                "username" : username,
                "password" : password
          };

$.ajax({
    contentType: 'application/json',
    data: JSON.stringify(user)
})

后端参数接收就不用加@RequestBody了

我们看到的样式就如:username=username&password=password

3:@RequestBody

①. 使用@RequestBody

当请求content_type为:application/json类型的请求,数据类型为json时, json格式如下:{“aaa”:“111”,“bbb”:“222”}

②. 不使用@RequestBody
当请求content_type为:application/x-www-form-urlencoded类型的或multipart/form-data时,数据格式为aaa=111&bbb=222

参考来源:@RequestBody用与不用_bug–0/1的博客-CSDN博客_可以不使用requestbody

### 回答1: qs.stringify是一个将对象转换为查询字符串的工具,它可以将对象中的属性和值转换为URL中的查询参数,例如:将{a:1, b:2}转换为?a=1&b=2。 json.stringify是一个将JavaScript对象转换JSON字符串的工具,它可以将JavaScript对象中的属性和值转换JSON格式的字符串,例如:将{a:1, b:2}转换为{"a":1,"b":2}。 ### 回答2: qs.stringifyjson.stringify都是将JavaScript对象转化为字符串的方法,在使用中有一些不同的应用场景和方式。 qs.stringify是一个非常常用的方法,它的作用是将对象序列化为URL查询字符串。当我们需要将对象的值作为查询字符串的参数传递给服务器端时,通常使用这个方法。例如: ```javascript const obj = {foo: 'bar', baz: ['qux', 'quux'], corge: ''}; console.log(qs.stringify(obj)); // 'foo=bar&baz%5B0%5D=qux&baz%5B1%5D=quux&corge=' ``` qs.stringify会对对象进行递归序列化,将对象的属性和值都转化为字符串。在上面的例子中,baz属性是一个数组,qs.stringify会将它序列化为'baz%5B0%5D=qux&baz%5B1%5D=quux',对应于URL查询字符串中的'baz[0]=qux&baz[1]=quux'。corge属性是一个空字符串,因此序列化后会转化为空字符串。 另一方面,json.stringify的作用是将对象序列化为JSON字符串。当我们需要将对象的值作为JSON格式的数据传递给服务器端时,通常使用这个方法。例如: ```javascript const obj = {foo: 'bar', baz: ['qux', 'quux'], corge: ''}; console.log(JSON.stringify(obj)); // '{"foo":"bar","baz":["qux","quux"],"corge":""}' ``` json.stringify同样会对对象进行递归序列化,将对象的属性和值都转化为JSON格式的字符串。在上面的例子中,baz属性是一个数组,json.stringify会将它序列化为'["qux","quux"]',对应于JSON格式中的'["qux", "quux"]'。corge属性是一个空字符串,因此序列化后会转化为空字符串。 总的来说,qs.stringifyjson.stringify都是非常有用的辅助方法,它们能够帮助我们将对象序列化为字符串进行传递,不同的是qs.stringify序列化为查询字符串,而json.stringify序列化为JSON格式字符串。在具体应用中,我们需要根据情况选择不同的方法来进行序列化。 ### 回答3: qs.stringify是Node.js中一个简单的将对象序列化成URL查询字符串的库。该库支持嵌套对象,并且可以通过设置参数选项来控制如何序列化。qs.stringify序列化对象时,会将对象中的属性名按照字母顺序排序,然后根据key=value的形式生成查询字符串。该库的主要使用场景是发送POST请求或GET请求时,可以方便地将对象作为请求体或查询参数发送到服务器端。 而JSON.stringify是将一个JavaScript对象转换为一个JSON字符串的方法。该方法会忽略对象中的函数和undefined属性,并能处理Number和String的非基本数据类型,例如Infinity、NaN、正则表达式等。JSON.stringify用于在客户端与服务端之间传递数据。在前端开发中,我们通常会用JSON.stringify将JS对象序列化成字符串,然后将其发送到后端API接口。相反地,后端API接口处理数据后,也可以通过JSON.stringify将数据序列化为JSON字符串,然后返回给前端。此外,JSON.stringify还有一个很实用的功能,可以接受第二个参数,用于指定哪些属性应该被序列化或者转换输出的格式等。 总的来说,qs.stringify主要用于序列化URL查询字符串,用于发送GET或POST请求时,而JSON.stringify主要用于在前端后端传递JSON数据,进行数据交互时使用。两者在使用场景及功能上有所区别,但都是JS中常用的序列化操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值