Skip to content

Commit e14c50f

Browse files
querystring to json
0 parents  commit e14c50f

File tree

6 files changed

+64
-0
lines changed

6 files changed

+64
-0
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
node_modules

index.js

Whitespace-only changes.

package.json

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"name": "querystring2json",
3+
"version": "1.0.0",
4+
"description": "",
5+
"main": "index.js",
6+
"directories": {
7+
"example": "example"
8+
},
9+
"scripts": {
10+
"test": "echo \"Error: no test specified\" && exit 1"
11+
},
12+
"keywords": [],
13+
"author": "",
14+
"license": "ISC",
15+
"devDependencies": {
16+
"webpack": "^4.31.0",
17+
"webpack-cli": "^3.3.2"
18+
}
19+
}

src/json2qs.js

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
let obj={ a: [ '1', '2' ], b: '2', c: '3',d:123,e:true };
2+
function stringify(obj){
3+
let result="";
4+
for(let key in obj){
5+
if( typeof obj[key] !='object'){ //非对象值都转化为字符串
6+
obj[key]=obj[key].toString();
7+
result+=key+"="+obj[key]+"&"
8+
}else if(obj[key] instanceof Array){ //是数组
9+
obj[key].forEach(v=>{
10+
result+=key+"="+v+"&"
11+
})
12+
}
13+
}
14+
return result.slice(0,-1);
15+
}
16+
console.log(stringify(obj));

src/package.json

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"devDependencies": {
3+
"webpack": "^4.31.0",
4+
"webpack-cli": "^3.3.2"
5+
}
6+
}

src/qs2json.js

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
/**
2+
* querystring to json
3+
* "a=1&a=2&b=2&c=3&d=123&e=true" to { a: [ '1', '2' ], b: '2', c: '3', d: '123', e: 'true' }
4+
*/
5+
let str="a=1&a=2&b=2&c=3&d=123&e=true"
6+
function parse(str){
7+
let result={};
8+
let s1=str.split("&");
9+
10+
s1.forEach((v,i)=>{
11+
let res= v.split("=");
12+
if(!result[res[0]]){ //key不存在
13+
result[res[0]]=res[1];
14+
}else if(result[res[0]] instanceof Array){ //result key为数组
15+
result[res[0]].push(res[1]);
16+
}else{ //result key 已存在 且不为数组
17+
result[res[0]]=[result[res[0]],res[1]]
18+
}
19+
})
20+
return result;
21+
}
22+
console.log(parse(str));

0 commit comments

Comments
 (0)