Нужна помощь с таблицей lua, содержащей несколько «строк» - PullRequest
0 голосов
/ 03 июля 2019

Я извлекаю результат из внешнего источника через json и использую библиотеку json для преобразования его в таблицу. Результаты могут быть в несколько рядов, что мне трудно понять. Я использую программную платформу с lua в качестве бэкэнда. У меня есть библиотека json от Джеффри Фридла отсюда: JSON Decode

Пример табличных данных, возвращаемых из библиотеки json: decode, которая включена в платформу, которую я использую: «{ "THE_TYPE": "М", "P_TYPE": "L", "CODESET_DESCRIPTION": "X", "CODESET_ID": 356, "ErrorMessage": "", "S_AMOUNT": 2562,5, "T_AMOUNT": 4200 }, {"THE_TYPE": "M", "P_TYPE": "A", "CODESET_DESCRIPTION": "Все коды", "CODESET_ID": 359, "ErrorMessage": "", "S_AMOUNT": 0, "T_AMOUNT" : 2500} '

Я пробовал несколько итераций пар и ipairs и просто не могу заставить мой код различать строки.

Это дает мне первый ряд данных:

local data = json:decode(result.data.http.get) --example only to clarify how data is converted into lua table 
for k, v in pairs(data) do
   print(k, v)
end

Я также пробовал варианты вызова таблицы по номеру строки, но мое понимание таблиц в lua не впечатляет.

for k, v in pairs(data[1]) do

или

for k, v in ipairs(data[1]) do

но те возвращаемые ошибки, утверждающие, что ожидали таблицу, но получили ноль

Мне бы хотелось иметь возможность разбирать эту строку за строкой, даже не нужно указывать конкретный возвращаемый порядок, мне просто нужны данные, чтобы я мог с ними работать.

1 Ответ

0 голосов
/ 03 июля 2019

во-первых, используйте json.decode с точкой, а во-вторых, текст json должен быть проверен на достоверность:

local  s = [[
[
  {
    "THE_TYPE": "M",
    "P_TYPE": "L",
    "CODESET_DESCRIPTION": "X",
    "CODESET_ID": 356,
    "ErrorMessage": "",
    "S_AMOUNT": 2562.5,
    "T_AMOUNT": 4200
  },
  {
    "THE_TYPE": "M",
    "P_TYPE": "A",
    "CODESET_DESCRIPTION": "All Codes",
    "CODESET_ID": 359,
    "ErrorMessage": "",
    "S_AMOUNT": 0,
    "T_AMOUNT": 2500
  }
]
]]


local data = json.decode(s) 
print(data)
for k, v in pairs(data[1]) do
   print(k, v)
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...