有没有办法在实际尝试拉出它之前检查JSON中是否存在值?

时间:2018-03-01 14:14:42

标签: json node.js undefined

所以这是我的代码:

                  var result = JSON.parse(res);
              if (result.data.status === 404) {
                client.chatMessage(steamid,"Please check that the order id is correct, Code = ERR:404")
              } else {
              var meta = result.meta_data;
              var tradeurl = meta[0].value;
              var billing = result.billing;
              var name = billing.first_name +" "+ billing.last_name;
              var status = result.status;
              client.chatMessage(steamid,"Name : "+name+"\nTradeUrl : "+ tradeurl +"\n Current Status : " + status)
              }

我要做的是首先检查id是否存在,如果不存在则回复:

{ code: 'woocommerce_rest_shop_order_invalid_id',
 message: 'Invalid ID.',
 data: { status: 404 } }

正如您所看到的,我添加了一个if条件来检查此值是否存在,但问题是当订单ID正确时,则返回另一个不包含data字段的JSON,当反过来崩溃应用程序时,有没有办法在实际拉动之前检查JSON中是否存在字段?

2 个答案:

答案 0 :(得分:0)

  

当订单ID正确时[...]不包含数据字段

因此,如果data仅在发生错误时出现在响应中,则可以检查result.data是否未定义

if (typeof result.data === "undefined") {
  /* ok */
}
else {
  /* error */
}

答案 1 :(得分:0)

有一个名为Optional Chaining的ECMAScript新提案。一旦获得批准,您就可以这样做:

var zip = user?.address?.zip

即使undefineduserundefined不存在,zip也会address

不是工作的答案,但值得注意。

参考:https://github.com/tc39/proposal-optional-chaining