我该如何检查这个javascript对象?

时间:2011-05-11 03:21:10

标签: javascript json node.js

{
    "@": {
        "xmlns": "http://ses.amazonaws.com/doc/2010-12-01/"
    },
    "SendEmailResult": {
        "MessageId": "0000012fdd10caaf-021c6e9e-e872-4b35-ad94-1d11c79a6324-000000"
    },
    "ResponseMetadata": {
        "RequestId": "736d5bb2-7b7d-11e0-b435-f7b0c9315f0d"
    }
}

如何检查对象中是否存在“MessageId”? (没有抛出错误) 我可能会返回其他json对象,我需要知道我得到的是否有“MessageId”。

2 个答案:

答案 0 :(得分:4)

假设您在obj中有对它的引用,那么:

if (obj && obj.SendEmailResult && "MessageId" in obj.SendEmailResult) {
    // The "MessageId" property exists in `obj.SendEmailResult`
}

可能更有用,但是:

var msgid = obj && obj.SendEmailResult && obj.SendEmailResult.MessageId;
if (msgid) {
    // The property exists and is "truthy", `msgid` is the value
}

JavaScript的AND运算符&&比其他一些语言更有用,它返回右侧的如果它的两个操作数都是“真实的”(而不仅仅是返回)一个true / false结果,与大多数语言一样)。 “truthy”值是一个不是“虚假”的值(显然)。 “Falsy”值为falseundefinednull""0

所以上面基本上说“将msgid设置为obj.SendEmailResult.MessageId,前提是objobj.SomeEmailResult都存在。

||运算符为similarly powerful。)

答案 1 :(得分:0)

假设你得到一个名为result的变量的结果,你应该能够用一个简单的if语句来做这个(考虑到javascript if语句短路:

if (result && result["SendEmailResult"] && result["SendEmailResult"]["MessageId"]) {
    //execute your code
}