如何检入JSON对象,输入路径是否存在?
var obj = {
"schemaOne": {
"name": "abc",
"Path": "i.abc",
"count": 5347,
"subFolders": [
]
},
"schemaTwo": {
"name": "cde",
"Path": "i.cde",
"count": 0,
"subFolders": [
{
"name": "efg",
"Path": "",
"count": 0,
"subFolders": [
]
},
{
"name": "hij",
"Path": "i.hij",
"count": 1,
"subFolders": [
]
}
]
}
}
var inputpath = "obj.count";
经过多次研究后,我遇到了以下代码。在此代码中,o.Path
是用户已知的。但我想修改代码,以便动态检查obj.count
是否存在于JSON对象中?
function upd(o, path, count) {
if (o.Path == path) {
o.count = count;
} else {
var arr;
if (Array.isArray(o)) arr = o;
else if (o.subFolders) arr = o.subFolders;
else return;
for(var j=0; j < arr.length; j++) {
upd(arr[j], path, count);
}
}
}
答案 0 :(得分:0)
您的问题不是很明确,也不是用例。有人告诉你,obj
是一个JavaScript对象,而不是JSON。
如果我理解正确,你想检查该对象中是否存在一个被视为字符串的路径(例如&#34; obj.count&#34;)。
一个非常快但不安全的解决方案(eval
是邪恶的,几乎在所有情况下都应该避免)可能是:
if(eval(inputpath)){
//... do something
}
另外,我建议你编写一个函数来获取一个对象和一个字符串(path)作为参数,解析字符串路径并检查对象是否包含这样的路径。