如何检查此javascript对象?
问题描述:
{
"@": {
"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”。如何检查此javascript对象?
答
假设你有一个参考它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运算&&
比一些其他语言的更加有用,它返回右侧的值如果两个操作数都是“truthy”(而不仅仅是返回true
/false
结果,因为在大多数语言)。 “truthy”值是一个非“falsy”(显然)的值。 “Falsy”值是false
,undefined
,null
,""
和0
。
所以上面基本上说“设置msgid
到obj.SendEmailResult.MessageId
提供obj
和obj.SomeEmailResult
都存在。
(该||
运营商是similarly powerful)
答
假设你得到的结果在一个变量叫做因此,你应该能够用一个简单的if语句来做到这一点(考虑到if语句短路的JavaScript:
if (result && result["SendEmailResult"] && result["SendEmailResult"]["MessageId"]) {
//execute your code
}
+1有关使用'obj.SendEmailRequest.hasOwnProperty什么(” MessageId')'来防止[这种稀罕性](http://jsfiddle.net/RxPF5/)? – alex 2011-05-11 03:30:07
@alex:当然,如果合适的话。99%的时间,你不在乎,你只是想要属性 - 无论它来自何处。:-)(并且你想跑远,远离任何延伸'Object.property'的代码。) – 2011-05-11 03:32:52
J.做我的人t应该被引入给为undefined指定一个不同值的人。 – alex 2011-05-11 03:38:53