我看很多项目中,有人用了qs库 我不知道既然有JSON的方法将数据切换格式,为什么还要安装qs
我看很多项目中,有人用了qs库 我不知道既然有JSON的方法将数据切换格式,为什么还要安装qs
qs
库支持的类型和方法更多吧,如文档中所写的那样转化不符合json格式的字符串,例如'foo[bar][baz]=foobarbaz')
。
对于stringify
,qs库的输出也是不一样的,如上一条那样的格式。
如果你并没有这种需求,并且你的JSON是正常类型的JSON,还是用JSON好了。
附上npm:qs
我还自己写了一个吧,对象转成name=hehe&age=10
格式的,原来qs.stringify()就可以使用
补充说明:
qs.stringify把js对象转成key=value连接形式的字符串,类似:json.stringify,如:{name:'hehe', ange:10}
==>name=hehe&ange=10
qs.parse则是相反操作,把key=value连接字符串转成对象,类似:json.parse,如:name=hehe&ange=10
==>{name:'hehe', ange:10}
/**
* 把 json 串 转换成 key=value连接的形式
* @param params, 是json 对象 eg:var props = { "username": 'zhangsan', age: 14, sex: '男', height: 189 };
* @returns {string} eg:username=zhangsan&age=14&sex=男&height=189
*
* @author 杨海林
*/
function keyValueStringify(params) {
let newParams = params;
if (typeof params === 'string') {
newParams = JSON.parse(params);
}
const paramsArray = [];
// 拼接参数
Object.keys(newParams).forEach(key =>
paramsArray.push(`${key}=${encodeURIComponent(newParams[key])}`)
);
return paramsArray.join('&');
}
应该,把
qs和query-string和json三个放到一块对吧
共同点:都是有 parse
和stringify方法,都是对象和字符串的互转(url字符串或者json字符
串)
区别1:qs是querystring升级版本,更流程和强大,都是 对象《===》keyvalue字符串
区别2:qs(querstring)和json, 一个字符串是json传,一个是key=value&形式的字符串; 当然=和&也可以替换成其他的自定义的字符串
可以参见:qs和query-string有什么区别?
8 回答5.8k 阅读✓ 已解决
9 回答9.2k 阅读
6 回答4.8k 阅读✓ 已解决
5 回答3.5k 阅读✓ 已解决
4 回答7.9k 阅读✓ 已解决
7 回答9.9k 阅读
5 回答7.1k 阅读✓ 已解决
完全不是一个东西,功能虽然都是序列化。假设我要提交的数据如下
var a = {name:'hehe',age:10};
qs.stringify序列化结果如下
而JSON.stringify序列化结果如下: