检查参数是否存在于任何深度的 JSON 对象中

发布于 2024-11-15 12:41:07 字数 674 浏览 4 评论 0原文

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文