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

问题描述 投票:0回答:2

所以这是我的代码:

                  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正确时,返回一个不同的JSON,它不包含data字段,当反过来崩溃应用程序时,那么有没有办法在实际拉动之前检查JSON中是否存在字段?

json node.js undefined
2个回答
0
投票

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

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

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

0
投票

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

var zip = user?.address?.zip

即使当undefineduser,而且undefined也不存在,拉链将是address

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

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

© www.soinside.com 2019 - 2024. All rights reserved.