Странный тип данных в Lua.

invilso.

Известный
Автор темы
249
89
Версия MoonLoader
.027.0-preview
Я получаю из апишки следующий ответ:
Код:
{
    "status": "success",
    "data": "[{\"model\": \"admins.admin\", \"pk\": 2, \"fields\": {\"nickname\": \"name\", \"last_online\": \"2022-07-28T18:01:30.966Z\", \"spectate\": null, \"server\": \"115.129.104.53:9312\", \"time_created\": \"2022-07-26T19:28:39.864Z\"}}]"
}
Паршу его в таблицу вот так:
Lua:
data = decodeJson(decodeJson(response)['data'])
Но вот при вызове:
Lua:
print(data[1].fields.spectate)
Мне в консоль выводится:
userdata: NULL

Как мне можно получить нормальный тип данных с которым я могу работать?
 
Решение
я знаю, но почему decodeJson не вернет мне nil?
Спроси у FYP'а ¯\_(ツ)_/¯
Если серьёзно, хз как это можно рационально парсить, мейби как-нибудь через FFI
Но если костыльно, можешь тупо чекать строку на NULL, например
Lua:
function normalize_json_data(t)
    -- t - таблица
    for k, v in pairs(t) do
        if type(v) == "userdata" then
            if tostring(v):sub(10, -1) == "NULL" then
                t[k] = nil
            end
        end
    end
end

RedHolms

Известный
Проверенный
617
360
я знаю, но почему decodeJson не вернет мне nil?
Спроси у FYP'а ¯\_(ツ)_/¯
Если серьёзно, хз как это можно рационально парсить, мейби как-нибудь через FFI
Но если костыльно, можешь тупо чекать строку на NULL, например
Lua:
function normalize_json_data(t)
    -- t - таблица
    for k, v in pairs(t) do
        if type(v) == "userdata" then
            if tostring(v):sub(10, -1) == "NULL" then
                t[k] = nil
            end
        end
    end
end
 
  • Нравится
Реакции: invilso.

#Northn

Police Helper «Reborn» — уже ШЕСТЬ лет!
Всефорумный модератор
2,636
2,486
я знаю, но почему decodeJson не вернет мне nil?
 
  • Нравится
Реакции: invilso.

invilso.

Известный
Автор темы
249
89
Спроси у FYP'а ¯\_(ツ)_/¯
Если серьёзно, хз как это можно рационально парсить, мейби как-нибудь через FFI
Но если костыльно, можешь тупо чекать строку на NULL, например
Lua:
function normalize_json_data(t)
    -- t - таблица
    for k, v in pairs(t) do
        if type(v) == "userdata" then
            if tostring(v):sub(10, -1) == "NULL" then
                t[k] = nil
            end
        end
    end
end
Костыль ещё тот, но работает превосходно 😍