我想格式化一堆数据,我可以用下面的格式检索这些数据。 (我也把一个可读的版本注释掉) 我想把OUTPUT(见底部)显示的每一行放在一个json对象。但它只保留最后一项的细节,而我希望每个项目都保持在正确的MGId和FGId值下。json将动态孩子添加到动态密钥
MGID MGName FGID FGName的itemId ITEMNAME
6272440:饮料:6272963:焦炭:6274904:百事可乐@@@
我使用jsonObj [MGID] [FGID] [MIID],我期待这将在 jsonObj [MGId] [FGId]下创建单独的[MIId]。显然,我错过了一些东西,或者它不能以这种方式工作。 任何人都可以告诉我什么是缺少或任何其他方式欢迎。谢谢!!
/*
DATA READABLE FORMAT
6272440:Beverage:6272963:Coke:6274904:[email protected]@@
6272440:Beverage:6272963:coke:6274494:coco cola 1 [email protected]@@
6272440:Beverage:6272951:Milk:6274300:Skim 1 [email protected]@@
6272440:Beverage:6272951:Milk:6274130:Full [email protected]@@
6272437:Food:6272919:Breakfast Menu:6274947:Bacon and [email protected]@@
6272437:Food:6272915:Lunch Menu:6274766:Chicken [email protected]@@
6272437:Food:6272915:Lunch Menu:6274922:Vegi [email protected]@@
6272437:Food:6272915:Lunch Menu:6274900:Garlic Bread";
*/
var sampleData = "6272440:Beverage:6272963:Coke:6274904:[email protected]@@6272440:Beverage:6272963:coke:6274494:coco cola 1 [email protected]@@6272440:Beverage:6272951:Milk:6274300:Skim 1 [email protected]@@6272440:Beverage:6272951:Milk:6274130:Full [email protected]@@6272437:Food:6272919:Breakfast Menu:6274947:Bacon and [email protected]@@6272437:Food:6272915:Lunch Menu:6274766:Chicken [email protected]@@6272437:Food:6272915:Lunch Menu:6274922:Vegi [email protected]@@6272437:Food:6272915:Lunch Menu:6274900:Garlic Bread";
var elements = sampleData.split("@@@");
var jsonObj = {};
var menuItemsArr = [];
var previousMGId="";
var previousFGId="";
for(var i=0; i<elements.length; i++) {
var nextMenuPack = elements[i];
var nextMenuPackInnerHtml = nextMenuPack; //nextMenuPack.innerHTML;
var nextMenuPackArr = nextMenuPackInnerHtml.split(":");
var MGId = nextMenuPackArr[0];
var MGName = nextMenuPackArr[1];
var FGId = nextMenuPackArr[2];
var FGName = nextMenuPackArr[3];
var MIId = nextMenuPackArr[4];
var MIName = nextMenuPackArr[5];
console.log(MGName +"-"+FGName+"-"+MIName);
jsonObj[MGId] = {} ;
jsonObj[MGId][FGId] = {};
//var jsonObj = {};
jsonObj[MGId][FGId][MIId] = {
"MGName" : MGName,
"MGId": MIId,
"FGName": FGName,
"FGId": FGId,
"MIName" : MIName,
"MIId": MIId
};
}
document.write('<pre>'+JSON.stringify(jsonObj, null, "\t")+'</pre>');
输出
{
"6272440": { //major group id
"6272951": { //family group id
"6274130": { // menuitem id - JUST LAST ONE, OTHERS OVERWRITTEN!
"MGName": "Beverage",
"MGId": "6274130",
"FGName": "Milk",
"FGId": "6272951",
"MIName": "Full Cream",
"MIId": "6274130"
}
}
},
"6272437": {
"6272915": {
"6274900": {// menuitem id - JUST LAST ONE, OTHERS OVERWRITTEN!
"MGName": "Food",
"MGId": "6274900",
"FGName": "Lunch Menu",
"FGId": "6272915",
"MIName": "Garlic Bread",
"MIId": "6274900"
}
}
}
}
每次通过循环将元素重新初始化为“{}”。如果元素不存在,则只应初始化该元素。 – Barmar
@Barmar谢谢你看看。我正在初始化jsonObj [MGId] = {}; AND jsonObj [MGId] [FGId] = {};但每次将MIId添加到jsonObj [MGId] [FGId] [MIId]。也许我误解了你的帮助。你能给我一个小例子.. – Ozland
@Barmar:我想我必须被告知这个让它工作。我在添加评论后马上就明白了。再次感谢。 – Ozland