【发布时间】:2019-08-26 06:53:08
【问题描述】:
我有一个多级 JSON,如下例所示。我想编写一个简单的代码来循环遍历它并获取其中的所有键以进行验证。
我尝试了Object.keys(),但这只给出了对象第一级的键。我如何循环它以获得整个结果?
{
"id": "0001",
"ppu": 0.55,
"batters": {
"batter": [{
"id": "1001",
"type": "Regular"
},
{
"id": "1004",
"type": "Devil's Food"
}
]
},
"topping": {
"id": "5001",
"type": "None",
"moreData": {
"id": "5003",
"type1": "Chocolate",
"type2": {
"id": "5004",
"type": "Maple"
}
}
}
}
我通常只得到第一个键,即“id”、“ppu”、“batters”、topping”,但我想要所有的键,包括“batter”、“type”、“moreData”等。 注意:与下面的示例不同,我所有的密钥都是唯一的。
编辑 - 我正在尝试的代码:
function keyCheck(obj) {
var a = Object.keys(obj);
var arr=[];
arr.push(a);
for (var i = 0; i < a.length; i++) {
var b = obj[a[i]];
if (typeof (b) == 'object') {
keyCheck(b);
}
}
return arr[0];
}
keyCheck(obj);
【问题讨论】:
-
我认为这是一个关于递归获取对象键的更一般的 JavaScript 问题。周围有几个答案,以及帮助解决这个问题的库。例如:stackoverflow.com/questions/15690706/…
-
我很难找到一个不太大且简单的最终函数。
-
请添加预期结果和到目前为止您尝试过的内容
-
实际:[["id", "ppu", "batters", "toppings"]] 预期:[["id", "ppu", "batters", "toppings", " type", "moreData","type1", "type2"]]
-
@Mehul 检查我的更新答案
标签: javascript arrays json object marklogic