Javascript 将HTML表单数据转换为嵌套JSON
我试图将字段名称引用嵌套JSON结构的表单数据转换为JSON对象。表示表单数据的对象是:Javascript 将HTML表单数据转换为嵌套JSON,javascript,json,parsing,nested,form-data,Javascript,Json,Parsing,Nested,Form Data,我试图将字段名称引用嵌套JSON结构的表单数据转换为JSON对象。表示表单数据的对象是: { "custom[1].a": "FIXED", "custom[1].b": "", "custom[1].c": "PROPORTIONATE", "custom[1].d": "" "cust
{
"custom[1].a": "FIXED",
"custom[1].b": "",
"custom[1].c": "PROPORTIONATE",
"custom[1].d": ""
"custom[2].a": "FIXED2",
"custom[2].b": "",
"custom[2].c": "PROPORTIONATE2",
"custom[2].d": ""
}
我想把它转换成一个可以字符串化的对象
"customConfiguration": [
{
"a": "PROPORTIONATE",
"b": "",
"c": "FIXED",
"d": ""
},
{ "a": "PROPORTIONATE2",
"b": "",
"c": "FIXED2",
"d": ""
}]
也许这就是你想要的。假设数字表示数组索引,而基于1,则减少索引以获得基于零的结果
- 使用reduce迭代对象的所有键,从空对象开始
- 将
替换为[
,将键拆分为多个部分,因此带有[
的字符串表示数组值,其他是常用属性[…]
- 将reduce应用于right属性引用,从第一个reduce的对象开始
- 检查项是否是数组索引,如果是,则减量为1,使其从零开始
- 将属性应用于属性,或者如果下一部分是数组索引,则返回数组,否则返回对象
- 检查该键是否为数组中的最后一个键并指定值
- 返回新的对象引用
- 返回新对象
var对象={
'自定义[1].a':'按比例',
'自定义[1].b':'',
'自定义[1].c':'已修复',
'自定义[1].d':'',
'自定义[2].a':'比例2',
'自定义[2].b':'',
'自定义[2].c':'FIXED2',
'自定义[2].d':''
},
newObject=Object.keys(Object).reduce(函数(r,a){
a、 替换(“[”,“.[”).split(“.”).reduce(函数(o,b,i,kk){
函数isArrayIndex{return/^\[\d+\]$/.test;}
if(isArrayIndex(b)){
b=b.match(/\d+/)-1;
}
o[b]=o[b]| |(isArrayIndex(kk[i+1])?[]:{});
如果(i+1==kk.长度){
o[b]=对象[a];
}
返回o[b];
},r);
返回r;
}, {});
document.write(''+JSON.stringify(newObject,0,4)+'');
iscustom[2].c
一个字符串?自定义是否应该成为一个数组?从1
开始?上面两个都不是看起来不像JSON的JSON/JavaScript对象。这是实际数据还是某种控制台显示?抱歉,现在我已经更正了问题。您的编辑没有帮助。“JSON”没有人。现在想要的结果不见了。