如何遍历 JSON 对象并获取每个键的值
How to iterate over JSON Object and get the values for each key
我有一个 JSONObject,它有一个 JSONArray 作为每个键的值。
{
"abc" : [null, "1,3", "2,4"],
"dbs" : [null, "1,4", "4,5"],
"sad" : [null, "6,2", "3,4", "5,5"]
}
我想遍历对象并获取每个键的 JSONArray 值并将其放入字符串 []。键示例:abc 我想要一个 String[]: [null, "1,3", "2,4"]
有人可以帮我解决这个问题吗?
我尝试了以下方法:
for (var key in jsonObject) {
if (jsonObject.hasOwnProperty(key)) {
var array = jsonObject[key];
}
}
但这给了我:“,1,3,2,4”
这应该可以解决问题:
function extract(data){
return Object.keys(data).map(function(x){
return data[x].filter(function(z){return z!==null;});
});
}
这是fiddle to play with. For explanation of map, take a look at MDN
如果你想扁平化数据,你可以将它扩展到:
function flatten(data){
return Object.keys(Object.keys(data).map(function(x){
return data[x].filter(function(z){return z!==null;});
}).reduce(function(o,n){
n.forEach(function(x){
o[x]=x;
});
return o;
},{}));
}
我有一个 JSONObject,它有一个 JSONArray 作为每个键的值。
{
"abc" : [null, "1,3", "2,4"],
"dbs" : [null, "1,4", "4,5"],
"sad" : [null, "6,2", "3,4", "5,5"]
}
我想遍历对象并获取每个键的 JSONArray 值并将其放入字符串 []。键示例:abc 我想要一个 String[]: [null, "1,3", "2,4"]
有人可以帮我解决这个问题吗?
我尝试了以下方法:
for (var key in jsonObject) {
if (jsonObject.hasOwnProperty(key)) {
var array = jsonObject[key];
}
}
但这给了我:“,1,3,2,4”
这应该可以解决问题:
function extract(data){
return Object.keys(data).map(function(x){
return data[x].filter(function(z){return z!==null;});
});
}
这是fiddle to play with. For explanation of map, take a look at MDN
如果你想扁平化数据,你可以将它扩展到:
function flatten(data){
return Object.keys(Object.keys(data).map(function(x){
return data[x].filter(function(z){return z!==null;});
}).reduce(function(o,n){
n.forEach(function(x){
o[x]=x;
});
return o;
},{}));
}