qs.stringify 和 JSON.stringify 的区别和使用
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()
重点总结
以上只是基本不同实际使用中,还会有以下特点,也是实践的经验
- 在负责的多元素值进行序列化时,多层级中的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
的数据(具体的记不清了,上次项目就是这个细微的没有注意,一直传后端编译不通过)。
- 使用
qs.stringify()
序列化以后,调用接口,数据传输模式会自动修改为content-type: application/x-www-form-urlencoded
以上就是qs
的使用总结。