如何检查一个lua-table是否存在特定键?

每分钟我通过请求从网店检索以下数据。

  {
  ['action'] = 'all',
  ['orders'] = { ['order'] = { [1] = { ['locationId'] = 1,
                                       ['id'] = 93,
                                       ['orderNumber'] = '3200'
                                     }
                             }
               },
  ['status'] = 'success'
  }

从这个 table 中,我需要读取 ID 数字,使用下列代码:

IdNummer = Table.orders.order[1].id;

如果有订单,这个代码可以使用。

仅在没有订单时,我才会收到以下 table:

{
['action'] = 'all',
['orders'] = { ['order'] = {}  },
['status'] = 'success'
}

由于“id”不存在,我会收到错误提示:尝试索引空值 (field '?') 我该如何检查“id”是否存在,而不会出现错误?

点赞
用户4446971
用户4446971

在尝试访问其id字段之前,应首先检查条目Table.orders.order[1]是否存在。

在lua中,未分配的字段具有nil值。所以你可以这样做:

local orders = Table.orders.order
local IdNummer = nil
if orders[1] ~= nil then
  IdNummer = orders[1].id;
end

注意,在这个示例中,如果索引不存在,IdNummer将具有nil值。

2020-03-20 13:55:17