Javascript 将密钥分配给JSON对象

Javascript 将密钥分配给JSON对象,javascript,json,Javascript,Json,我有一个像这样的JSON对象 { "headings": [ "col1", "col2", "col3", "col4", ], "rows": [ [ { "a": "abc", "b": def, }, value1, valu

我有一个像这样的JSON对象

{
    "headings": [
        "col1",
        "col2",
        "col3",
        "col4",

    ],
    "rows": [
        [
            {
                "a": "abc",
                "b": def,
            },
            value1,
            value2,
            value3

        ],
        [
            {
                "a": "abc",
                "b": def,
            },
            value1,
            value2,
            value3

        ],
    ]
}
我想把标题转换成像这样的对象行的键

{
    "rows": [
        [
            "col1": {
                "a": "abc",
                "b": def,
            },
            "col2": value1,
            "col3": value2,
            "col4": value3

        ],
        [
            "col1": {
                "a": "abc",
                "b": def,
            },
            "col2": value1,
            "col3": value2,
            "col4": value3

        ],
    ]
}
我看了一下,没有找到任何方法,所以
如果有一个简单的函数/代码可以做到这一点,请有人帮忙吗?提前谢谢

您可以构建新条目并创建对象

var数据={标题:[“col1”、“col2”、“col3”、“col4”],行:[{a:“abc”,b:“def”},“value1”,“value2”,“value3”],[{a:“abc”,b:“def”},“value1”,“value2”,“value3”]},
rows=data.rows.map(a=>Object.fromEntries(data.headings.map((k,i)=>k,a[i]]);
log({rows})

.as控制台包装{max height:100%!important;top:0;}
要更改JSON对象,可以使用
JSON.parse(“JSON对象”)
轻松地将其转换为javascript对象

之后,使用javascript对对象进行更改

如果要将其转换回JSON,请使用
JSON.stringify(javascriptObject)

在您的情况下,您可能希望执行以下操作:

函数重新格式化(jsonString){
var data=JSON.parse(jsonString);
var标题=数据标题;
变量行=data.rows;
变量重新格式化数据={
行:[]
}
对于(变量i=0;i使用解构

let obj = {
    "headings": [ "col1",  "col2",  "col3", "col4",
    ],
    "rows": [
        [
            {   "a": "abc",  "b": "def", }, "value11","value12","value13"
        ],
        [
            {   "d": "ghi",  "e": "jkl", }, "value21","value22","value23"
        ],
    ]
} ;

for(let i = 0 ; i < obj.rows.length ; i++){


    let{ ...temp} = obj.rows[i] ;     //    gives  { '0' : {.....} , '1' : "value11" , '2' : "value12" , '3'  : "value13" }
    // console.log("temp ==> " ,temp) ;
    let count = 0 ;
    obj.headings.map(el => {
        temp[el] = temp[count]       // we just replace the keys in temp object with values in headings array :)
        delete temp[count++] ;
    });
    obj.rows[i] = temp ;
}

console.log(obj.rows) ;
让obj={
“标题”:[“第1栏”、“第2栏”、“第3栏”、“第4栏”,
],
“行”:[
[
{“a”:“abc”,“b”:“def”,},“value11”,“value12”,“value13”
],
[
{“d”:“ghi”,“e”:“jkl”,“value21”,“value22”,“value23”
],
]
} ;
for(设i=0;i”,temp);
让计数=0;
对象标题映射(el=>{
temp[el]=temp[count]//我们只是用标题数组中的值替换temp对象中的键:)
删除temp[count++];
});
对象行[i]=温度;
}
控制台日志(对象行);

我正在研究一个精确的解决方案,但基本上,您应该使用javascript
JSON.parse
将JSON转换为javascript对象。然后你可以改变它来适应你想要的。如果您想将其转换回json,只需使用
json.stringify
。您可以使用
Array.prototype.reduce()
。请在此进一步阅读:您想要的对象无效,因为您不能在数组元素上有键。也许内部数组
[]
应该转换成一个对象
{}
@GabrielePetrioli,在数组中有键是可以的,因为它们会自动转换成对象。我刚刚注意到,您显示的第一个JSON对象无效,因为它后面有一个逗号。这是意外事件吗?非常感谢!