Javascript 检查JSON对象中是否存在任何深度的参数
api以不可定义的深度返回JSON响应,其中可能包含或不包含某些元素。如何检查是否存在财产?一些参数包括奇怪的名称,如“@param”或“$”。这方面的例子如下 我为类似的东西写了一个检查,但由于上述原因,无法使用点语法。非常感谢您对修改此文件的帮助Javascript 检查JSON对象中是否存在任何深度的参数,javascript,json,object,square-bracket,Javascript,Json,Object,Square Bracket,api以不可定义的深度返回JSON响应,其中可能包含或不包含某些元素。如何检查是否存在财产?一些参数包括奇怪的名称,如“@param”或“$”。这方面的例子如下 我为类似的东西写了一个检查,但由于上述原因,无法使用点语法。非常感谢您对修改此文件的帮助 function checkValue(objectPath) { var keys = Object.isArray(objectPath) ? objectPath : objectPath.split("."); if (ke
function checkValue(objectPath) {
var keys = Object.isArray(objectPath) ? objectPath : objectPath.split(".");
if (keys[0] == "window") keys.shift();
try {
return keys.inject(window, function(obj, key) {return obj[key];});
} catch (e) {
return undefined;
}
}
要测试的对象的示例如下:
var obj = {
member: {
'@member-age': {
value: 42
}
}};
在我使用checkValue(obj.member.age)检查它之前,由于本例中的明显原因,我无法执行此操作。您是在寻找属性名称还是属性值?对于属性名称,我需要检查它是否存在,否则输出将失败。可能是重复的,您想要该属性的值吗?或者仅仅是它是否存在?那里的大多数解决方案对于
checkForProperty('obj.@member age.value')
都能很好地工作。在任何情况下都必须传递字符串。