Как проверить lua -таблицу, если ключ присутствует? - PullRequest
1 голос
/ 20 марта 2020

Каждую минуту я получаю следующие данные из интернет-магазина по запросу.

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

Из этой таблицы мне нужен идентификационный номер, который я читаю с кодом:

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

Если есть заказ, это работает

Если заказ не готов, я получу следующую таблицу:

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

Поскольку «id» не существует , Я получаю сообщение об ошибке: Попытка индексировать нулевое значение (поле '?') Как я могу проверить, существует ли "id" без получения ошибки?

1 Ответ

2 голосов
/ 20 марта 2020

Прежде чем пытаться получить доступ к полю 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 будет иметь нулевое значение.

...