Как бы я проверил этот объект JavaScript? - PullRequest
0 голосов
/ 11 мая 2011
{
    "@": {
        "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 ]

4 голосов
/ 11 мая 2011

Если у вас есть ссылка на него в 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 && более полезен, чем в некоторых других языках, он возвращает значение правой части, если оба его операнда являются "правдивыми" (а не просто возвращает true / false результат, как в большинстве языков). «Истинное» значение - это значение, которое не является «ложным» (очевидно). «Ложные» значения: false, undefined, null, "" и 0.

Таким образом, вышеприведенное в основном говорит: «Установите msgid на obj.SendEmailResult.MessageId при условии, что существуют obj и obj.SomeEmailResult.

(Оператор || является таким же мощным .)

0 голосов
/ 11 мая 2011

Предполагая, что вы получите результат в переменной с именем result, вы сможете сделать это с помощью простого оператора if (учитывая, что в коротком замыкании оператора if JavaScript:

if (result && result["SendEmailResult"] && result["SendEmailResult"]["MessageId"]) {
    //execute your code
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...