Javascript 如何将具有多个相同键的srting数组转换为JSON对象?
我从查询字符串中提取了一个数组,如下所示: var arr='field1=12345&status=New&status=Assigned&status=In Progress&field2=2&field3=abc&feild4=10' 我需要将这个数组转换为JSON对象。我正在使用以下代码:Javascript 如何将具有多个相同键的srting数组转换为JSON对象?,javascript,node.js,arrays,json,api-gateway,Javascript,Node.js,Arrays,Json,Api Gateway,我从查询字符串中提取了一个数组,如下所示: var arr='field1=12345&status=New&status=Assigned&status=In Progress&field2=2&field3=abc&feild4=10' 我需要将这个数组转换为JSON对象。我正在使用以下代码: const arr = 'field1=12345&status=New&status=Assigned&status=In Progress&field2=2
const arr = 'field1=12345&status=New&status=Assigned&status=In Progress&field2=2&field3=abc&feild4=10'
function arrayToObject(query) {
const uri = decodeURIComponent(query);
const chunks = uri.split('&');
const params = {}
var chunk = {}
for (var i=0; i < chunks.length ; i++) {
chunk = chunks[i].split('=');
console.log(chunk)
params[chunk[0]] = chunk[1];
}
return params;
}
const querySt = arrayToObject(decodedQueryString);
const qSt = JSON.stringify(querySt);
console.log(qSt)
const arr='field1=12345&status=New&status=Assigned&status=In Progress&field2=2&field3=abc&feild4=10'
函数arrayToObject(查询){
consturi=decodeURIComponent(查询);
const chunks=uri.split('&');
常量参数={}
var chunk={}
for(var i=0;i
我得到以下输出:
{“feild1”:“12345”,“状态”:“进行中”,“feild2”:“2”,“feild3”:“abc”,“feild4”:“10”}
但我需要这样的输出:
{“feild1”:“12345”,“状态”:[“新的”、“分配的”、“进行中的”],“feild2”:“2”,“feild3”:“abc”,“feild4”:“10”}
有人能帮上忙吗。这可以:
const arr = 'field1=12345&status=New&status=Assigned&status=In Progress&field2=2&field3=abc&feild4=10'
function arrayToObject(query) {
const uri = decodeURIComponent(query);
const chunks = uri.split('&');
const params = {}
var chunk = {}
for (var i=0; i < chunks.length ; i++) {
chunk = chunks[i].split('=');
console.log(chunk)
if (params[chunk[0]]){
params[chunk[0]] = Array.isArray(params[chunk[0]]) ? [...params[chunk[0]], chunk[1]] : [params[chunk[0]], chunk[1]];
} else {
params[chunk[0]] = chunk[1];
}
}
return params;
}
const querySt = arrayToObject(arr);
const qSt = JSON.stringify(querySt);
const arr='field1=12345&status=New&status=Assigned&status=In Progress&field2=2&field3=abc&feild4=10'
函数arrayToObject(查询){
consturi=decodeURIComponent(查询);
const chunks=uri.split('&');
常量参数={}
var chunk={}
for(var i=0;i
将字符串转换为对象。从对象中获取关键点,并将它们传递给一个对象以获取唯一的关键点。现在,将键数组缩小为一个对象,并用于单值键和多值键(如状态
):
const str='field1=12345&status=New&status=Assigned&status=In Progress&field2=2&field3=abc&feild4=10'
常量参数=新的URLSearchParams(str)
常量结果=[…新集合([…params.keys()])]
.减少((附件,钥匙)=>{
acc[键]=键==='状态'
?参数getAll(键)
:params.get(键)
返回acc
}, {})
console.log(JSON.stringify(result))