qs.stringify 和 JSON.stringify 的区别和使用

qs.stringify 和 JSON.stringify 都是序列化数据,但完全不是一个东西

比如:

// 要序列化的数据
var a = {
    
    name:'hehe',age:10};
// qs.stringify 序列化结果
name=hehe&age=10
// JSON.stringify序列化结果
"{"a":"hehe","age":10}"

总结:qs库支持的类型和方法更多。

qs.stringify 的使用

qs 可通过 npm 命令进行安装,是一个npm仓库所管理的包

// 通过 npm 命令进行安装
npm install qs
// 调用使用
import qs from 'qs'
qs.stringify()

重点总结

以上只是基本不同实际使用中,还会有以下特点,也是实践的经验

  1. 在负责的多元素值进行序列化时,多层级中的obj 会被编译成类似 encodeURIComponent 编译后的数据

例如:

let obj = {
    
    
  obj1: '11111',
  obj2: {
    
    'name': '小明', 'sex': 0, 'text': '<p>xxxxx</p>'},
  obj3: '22222'
}

console.log(JSON.stringify(obj))
console.log('------------------')
console.log(qs.stringify(obj))

结果
在这里插入图片描述

上面红线部分编译的内容类似encodeURIComponent编译,但是在有( 和 ) 符号时,encodeURIComponent 不会编译,会直接输出

qs.stringify 会编译成 20%22 的数据(具体的记不清了,上次项目就是这个细微的没有注意,一直传后端编译不通过)。

  1. 使用 qs.stringify() 序列化以后,调用接口,数据传输模式会自动修改为content-type: application/x-www-form-urlencoded

content-type 的类型说明


以上就是qs 的使用总结。

猜你喜欢

转载自blog.csdn.net/weixin_35773751/article/details/124679614