Javascript 将密钥分配给JSON对象
我有一个像这样的JSON对象Javascript 将密钥分配给JSON对象,javascript,json,Javascript,Json,我有一个像这样的JSON对象 { "headings": [ "col1", "col2", "col3", "col4", ], "rows": [ [ { "a": "abc", "b": def, }, value1, valu
{
"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]=温度;
}
控制台日志(对象行);
我正在研究一个精确的解决方案,但基本上,您应该使用javascriptJSON.parse
将JSON转换为javascript对象。然后你可以改变它来适应你想要的。如果您想将其转换回json,只需使用json.stringify
。您可以使用Array.prototype.reduce()
。请在此进一步阅读:您想要的对象无效,因为您不能在数组元素上有键。也许内部数组[]
应该转换成一个对象{}
@GabrielePetrioli,在数组中有键是可以的,因为它们会自动转换成对象。我刚刚注意到,您显示的第一个JSON对象无效,因为它后面有一个逗号。这是意外事件吗?非常感谢!