{
"@": {
"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”。
答案 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”值为false
,undefined
,null
,""
和0
。
所以上面基本上说“将msgid
设置为obj.SendEmailResult.MessageId
,前提是obj
和obj.SomeEmailResult
都存在。
(||
运算符为similarly powerful。)
答案 1 :(得分:0)
假设你得到一个名为result的变量的结果,你应该能够用一个简单的if语句来做这个(考虑到javascript if语句短路:
if (result && result["SendEmailResult"] && result["SendEmailResult"]["MessageId"]) {
//execute your code
}