从Javascript数组创建嵌套Json结构
我希望从一个数组中创建一个有效的嵌套Json文件,该文件具有唯一的keys值。目前,我只能在没有任何嵌套结构的情况下显示json 我想向控制台显示以下结构:从Javascript数组创建嵌套Json结构,javascript,arrays,json,Javascript,Arrays,Json,我希望从一个数组中创建一个有效的嵌套Json文件,该文件具有唯一的keys值。目前,我只能在没有任何嵌套结构的情况下显示json 我想向控制台显示以下结构: { "Key" : "data1", "header" : { "title" : "data2", "tag1" : "data3", "tag2" : "data4" }, "body" : { "text" : "data5" },
{
"Key" : "data1",
"header" : {
"title" : "data2",
"tag1" : "data3",
"tag2" : "data4"
},
"body" : {
"text" : "data5"
},
"updates" : {
"title" : "data6",
"text" : "data7"
},
"footer" : {
"title" : "data8",
"row1" :{
"col1" : {
"title" : "data9",
"text" : "data10"
},
"col2" : {
"title" : "data11",
"text" : "data12"
},
"col3" : {
"title" : "data13",
"text" : "data14"
}
},
"row2" :{
"col1" : {
"title" : "data15",
"text" : "data16"
},
"col2" : {
"title" : "data17",
"text" : "data18"
},
"col3" : {
"title" : "data19",
"text" : "data20"
}
},
"row3" :{
"col1" : {
"title" : "data22",
"text" : "data23"
},
"col2" : {
"title" : "data24",
"titlebis" : "data25",
"text" : "data26"
},
"col3" : {
"title" : "data27",
"text" : "data28"
}
},
"row4" :{
"col1" : {
"title" : "data29"
},
"website" : "data30",
"website-link" : "data31",
"email" : "data38",
"privacy" : "data32",
"privacy-link" : "data33",
"adr" : "data34",
"adr2" : "data35"
}
},
"other" : {
"short" : {
"des" : "data36"
},
"promovideo" : "data37"
}
}
以下是我已经做过的:
var data=[[“Key”,“data1”],
[“header.title”,“data2”],
[“header.tag1”,“data3”],
[“header.tag2”,“data4”],
[“body.text”,“data5”],
[“updates.title”,“data6”],
[“updates.text”,“data7”],
[“页脚标题”,“数据8”],
[“footer.row1.col1.title”,“data9”],
[“footer.row1.col1.text”,“data10”],
[“footer.row1.col2.title”,“data11”],
[“footer.row1.col2.text”,“data12”],
[“footer.row1.col3.title”,“data13”],
[“footer.row1.col3.text”,“data14”],
[“footer.row2.col1.title”,“data15”],
[“footer.row2.col1.text”,“data16”],
[“footer.row2.col2.title”,“data17”],
[“footer.row2.col2.text2”,“data18”],
[“footer.row2.col3.title”,“data19”],
[“footer.row2.col3.text”,“data20”],
[“footer.row3.col1.title”,“data22”],
[“footer.row3.col1.text”,“data23”],
[“footer.row3.col2.title”,“data24”],
[“footer.row3.col2.title”,“data25”],
[“footer.row3.col2.text”,“data26”],
[“footer.row3.col3.title”,“data27”],
[“footer.row3.col3.text”,“data28”],
[“footer.row4.col1.title”,“data29”],
[“footer.row4.website”,“data30”],
[“footer.row4.website link”,“data31”],
[“footer.row4.email”,“data31”],
[“footer.row4.privacy”,“data32”],
[“footer.row4.privacy link”,“data33”],
[“footer.row4.adr”,“data34”],
[“footer.row4.adr2”,“data35”],
[“other.short.des”,“data36”],
[“其他.促销视频”,“数据37”],
];
//控制台日志(数据);
数据。排序(按字母顺序);//按字母顺序排序我们的2D数组
CreateAndDisplayJson(数据);
//从Keys Trad数据创建JSON文件
函数CreateAndDisplayJson(GetKeysTraductionArrayData){
var lenght=GetKeysTraditionArraydata.length;
var output=“{\n”;
对于(变量i=0;i1){//,则需要缩进键
var closeBraket=“”;
var spating=“;//Json缩进
var saveSpacingTab=[];//结束缩进
对于(j=0;j B)返回1;
返回0;
}
您可以使用forEach
循环和内部split
每个键,然后使用reduce
为每个键构建嵌套结构
var data=[“Key”,“data1”],[“header.title”,“data2”],[“header.tag1”,“data3”],[“header.tag2”,“data4”],[“body.text”,“data5”],[“updates.title”,“data6”],[“updates.text”,“data7”],[“footer.title”,“data8”],[“footer.row1.col1.title”,“data9”],[“footer.row1.col1.text”,“data10”],[“footer.row1.col2.title”,“data11”,“data1.footer.col1.text”],[“col2”[“footer.row1.col3.title”、“data13”]、[“footer.row1.col3.text”、“data14”]、[“footer.row2.col1.title”、“data15”]、[“footer.row2.col1.text”、“data16”]、[“footer.row2.col2.title”、“data17”]、[“footer.row2.col2.text2”、“data18”]、[“footer.row2.col3.title”、“data19”、[“footer.row2.col3.col3.text”、“data20”、[“footer.col1.col2.col1”、“row1.col1.text”…”数据23“],[“footer.row3.col2.title”,“数据24”],[“footer.row3.col2.title”,“数据25”],[“footer.row3.col2.text”,“数据26”],[“footer.row3.col3.title”,“数据27”],[“footer.row3.col3.text”,“数据28”],[“footer.row4.col1.title”,“数据29”],[“footer.row4.website”,“数据30”],[“footer.row4.website link”,“数据31”],[“footer数据32“],[“footer.row4.privacy link”,“数据33”],[“footer.row4.adr”,“数据34”],[“footer.row4.adr2”,“数据35”],[“other.short.des”,“data36”],[“other.promovideo”,“data37”]
让结果={}
data.forEach(([key,value])=>{
键。拆分('.')。减少((r,k,i,arr)=>{
返回r[k]| |(r[k]=arr[i+1]?{}:value)
},结果)
})
console.log(result)
您可以使用forEach
循环和内部split
每个键,然后使用reduce
为每个键构建嵌套结构
var data=[[“Key”,“data1”],[“header.title”,“data2”],[“header.tag1”,“data3”],[“header.tag2”,“data4”],[“body.text”,“data5”],[“updates.title”,“data6”],[“updates.text”,“data7”],[“footer.title”,“data8”],[“footer.row1.col1.title”,“data9”],[“footer.row1.col1.text”,“data10”],[“footer.row1.col2.title”,“data11”,[“footer.col1.text”,“col1.col2”[“col2”],”footer.row1.col3.title、“数据13”]、[“footer.row1.col3.text”、“数据14”]、[“footer.row2.col1.title”、“数据15”]、[“footer.row2.col1.text”、“数据16”]、[“footer.row1.col3.title”、“数据17”]、[“footer.row2.col2.text2”、“数据18”]、[“footer.row2.col3.title”、“数据19”、[“footer.row2.col3.col1.text”、“数据20”、[“footer.row2.col1.col2.col1”]、“col1.text”、[“col3.col1”]、“col3数据23“],[“footer.row3.col2.title”,“数据24”],[“footer.row3.col2.title”,“数据25”],[“footer.row3.col2.text”,“数据26”],[“footer.row3.col3.title”,“数据27”],[“footer.row3.col3.text”,“数据28”],[“footer.row4.col1.title”,“数据29”],[“footer.row4.website”,“数据30”],[“footer.row4.website link”,“数据31”],[“footer数据32“],[“footer.row4.privacy link”,“数据33”],[“footer.row4.adr”,“数据34”],[“footer.row4.adr2”,“数据35”],[“other.short.des”,“data36”],[“other.promovideo”,“data37”]
让结果={}
data.forEach(([key,value])=>{
键。拆分('.')。减少((r,k,i,arr)=>{
返回r[k]| |(r[k]=arr[i+1]?{}:value)
},结果)
})
console.log(结果)
含有还原剂的非三元溶液:
const data = [["Key","data1"],["header.title","data2"],["header.tag1","data3"],["header.tag2","data4"],["body.text","data5"],["updates.title","data6"],["updates.text","data7"],["footer.title","data8"],["footer.row1.col1.title","data9"],["footer.row1.col1.text","data10"],["footer.row1.col2.title","data11"],["footer.row1.col2.text","data12"],["footer.row1.col3.title","data13"],["footer.row1.col3.text","data14"],["footer.row2.col1.title","data15"],["footer.row2.col1.text","data16"],["footer.row2.col2.title","data17"],["footer.row2.col2.text2","data18"],["footer.row2.col3.title","data19"],["footer.row2.col3.text","data20"],["footer.row3.col1.title","data22"],["footer.row3.col1.text","data23"],["footer.row3.col2.title","data24"],["footer.row3.col2.title","data25"],["footer.row3.col2.text","data26"],["footer.row3.col3.title","data27"],["footer.row3.col3.text","data28"],["footer.row4.col1.title","data29"],["footer.row4.website","data30"],["footer.row4.website-link","data31"],["footer.row4.email","data31"],["footer.row4.privacy","data32"],["footer.row4.privacy-link","data33"],["footer.row4.adr","data34"],["footer.row4.adr2","data35"],["other.short.des","data36"],["other.promovideo","data37"]]
const result = data.reduce((all, [keys, val]) => {
keys.split('.').reduce((obj, key, i, arr) => {
if (i === arr.length - 1) {
obj[key] = val;
} else {
if (!obj.hasOwnProperty(key)) {
obj[key] = {};
};
}
return obj[key];
}, all);
return all;
}, {});
console.log(result);
含有还原剂的非三元溶液
:
const data = [["Key","data1"],["header.title","data2"],["header.tag1","data3"],["header.tag2","data4"],["body.text","data5"],["updates.title","data6"],["updates.text","data7"],["footer.title","data8"],["footer.row1.col1.title","data9"],["footer.row1.col1.text","data10"],["footer.row1.col2.title","data11"],["footer.row1.col2.text","data12"],["footer.row1.col3.title","data13"],["footer.row1.col3.text","data14"],["footer.row2.col1.title","data15"],["footer.row2.col1.text","data16"],["footer.row2.col2.title","data17"],["footer.row2.col2.text2","data18"],["footer.row2.col3.title","data19"],["footer.row2.col3.text","data20"],["footer.row3.col1.title","data22"],["footer.row3.col1.text","data23"],["footer.row3.col2.title","data24"],["footer.row3.col2.title","data25"],["footer.row3.col2.text","data26"],["footer.row3.col3.title","data27"],["footer.row3.col3.text","data28"],["footer.row4.col1.title","data29"],["footer.row4.website","data30"],["footer.row4.website-link","data31"],["footer.row4.email","data31"],["footer.row4.privacy","data32"],["footer.row4.privacy-link","data33"],["footer.row4.adr","data34"],["footer.row4.adr2","data35"],["other.short.des","data36"],["other.promovideo","data37"]]
const result = data.reduce((all, [keys, val]) => {
keys.split('.').reduce((obj, key, i, arr) => {
if (i === arr.length - 1) {
obj[key] = val;
} else {
if (!obj.hasOwnProperty(key)) {
obj[key] = {};
};
}
return obj[key];
}, all);
return all;
}, {});
console.log(result);
我讨厌多次读同一句话,让我觉得自己快疯了。目前,我只能显示。…
也许你可以告诉我们数组的大小