检查参数是否存在于任何深度的 JSON 对象中
API 以不可定义的深度返回 JSON 响应,其中可能包含也可能不包含某些元素。如何检查属性是否存在?一些参数包括奇怪的名称,例如 @param
或 $
。示例如下。
我写了一个类似的检查,但由于上述原因不能使用点语法。非常感谢您对此进行修改的帮助。
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)
检查它之前,但在本示例中由于明显的原因无法执行此操作。
An API returns a JSON response at undefinable depth where some elements may or not be included. How do I check if a property is present? Some of the parameters include weird names like @param
or $
. Example for this follows.
I wrote a check for something similar, but cannot use the dot syntax for above reasons. Help for modifying this is highly appreciated.
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;
}
}
Example for the object to test on is:
var obj = {
member: {
'@member-age': {
value: 42
}
}};
Before I checked it with checkValue(obj.member.age)
but cannot do this for obvious reasons in this example.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论