我有一个json数据,需要转换为单独的键值对才能添加到数组中。
将json数据转换为单独的密钥对数据的正确方法是什么??
我正在寻找最好的做法。
这是我的json:
{
"DashBoard":[
{"title":"DashBoard"},
{"widget":[{"slide":"To do"},{"slide":"Teamspace"},{"slide":"Recent Activity"}]},
{"activity":[
{"option":[{"show":"Volvo"},{"show":"Benz"},{"show":"Honda"}]},
{"rows":[
{"row" : {"title":"Advert1", "text":"sample text1", "date":"22-06-2013"} }
,{"row" : {"title":"Advert2", "text":"sample text2", "date":"22-06-2014"} }
,{"row" : {"title":"Advert3", "text":"sample text3", "date":"22-06-2015"} }
,{"row" : {"title":"Advert4", "text":"sample text4", "date":"22-06-2016"} }
,{"row" : {"title":"Advert5", "text":"sample text5", "date":"22-06-2017"} }
]}
]}
]
}
我的输出应该是:
var arr = [
{"title":"DashBoard"},
{"slide":"To do"},
{"slide":"Teamspace"},
{"slide":"Recent Activity"},
{"show":"Volvo"},
{"show":"Benz"},
{"show":"Honda"}
{"row" : {"title":"Advert1", "text":"sample text1", "date":"22-06-2013"},
{"row" : {"title":"Advert2", "text":"sample text2", "date":"22-06-2014"}
]
像这样。
我尝试:
newObj = {
"title" : obj[0],
"widget" : obj[1]["widget"],
"option" : obj[2].activity[0]["option"],
"rows" : obj[2].activity[1]["rows"]
};
newObj = {
"title" : obj[0],
"widget" : obj[1]["widget"],
"option" : obj[2].activity[0]["option"],
"rows" : obj[2].activity[1]["rows"]
};
$.each(newObj, function(key, value){
if($.type(value) === "object"){
newColl.push(value);
}else if ($.type(value) === "array"){
_.each(value, function(i,v){
newColl.push(i);
})
}
})
但是没有结果最好。任何人帮助我更正确的方法得到这个? (基本上我将这全部转换为骨干模型)
答案 0 :(得分:3)
接受挑战!今天我心情很好,所以你走了:
function getArray(input) {
var result = [];
for (var i in input) {
var val = input[i];
if (Object.prototype.toString.call(val) === '[object Array]') {
for(var j = 0; j < val.length; j++){
result = result.concat(getArray(val[j]));
}
} else {
var item = {};
item[i] = val;
result.push(item);
}
}
return result;
}
var output = getArray(input);
这假定input
是您的原始对象(不是JSON字符串)。如果你有一个JSON字符串,首先解析它:
var input = JSON.parse(jsonString);