Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将HTML表单数据转换为嵌套JSON_Javascript_Json_Parsing_Nested_Form Data - Fatal编程技术网

Javascript 将HTML表单数据转换为嵌套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

我试图将字段名称引用嵌套JSON结构的表单数据转换为JSON对象。表示表单数据的对象是:

{
    "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)+'');
is
custom[2].c
一个字符串?自定义是否应该成为一个数组?从
1
开始?上面两个都不是看起来不像JSON的JSON/JavaScript对象。这是实际数据还是某种控制台显示?抱歉,现在我已经更正了问题。您的编辑没有帮助。“JSON”没有人。现在想要的结果不见了。