【问题标题】:How would I check this javascript object?我将如何检查这个 javascript 对象?
【发布时间】:2011-08-22 23:10:40
【问题描述】:
{
    "@": {
        "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 json node.js


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      假设您在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 运算符 && 比其他一些语言更有用,它返回右侧的 如果它的两个操作数都是“真实的”(而不是仅仅返回一个 @ 987654327@ / false 结果,与大多数语言一样)。 “真实”值是不是“虚假”的值(显然)。 “虚假”值是 falseundefinednull""0

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

      || 运算符是similarly powerful。)

      【讨论】:

      • +1 使用obj.SendEmailRequest.hasOwnProperty('MessageId') 来防范this rarity 怎么样?
      • @alex:当然,如果合适的话。 99% 的时间,你不在乎,你只想要财产——无论它来自哪里。 :-)(而且你想远离任何扩展 Object.property 的代码。)
      • J.应该将这样做的人介绍给给undefined分配不同值的人。
      猜你喜欢
      • 2014-06-19
      • 2011-07-18
      • 2021-08-15
      • 1970-01-01
      • 1970-01-01
      • 2013-01-21
      • 1970-01-01
      • 2010-09-27
      • 1970-01-01
      相关资源
      最近更新 更多