需要帮助包含多个“行”的lua表

时间:2019-07-03 13:14:05

标签: json lua

我正在通过json从外部源获取结果,并使用json库将其转换为表。结果可能是多行,这是我很难弄清楚的。我正在使用以lua为后端的软件平台。我从这里得到了Jeffrey Friedl的json库:JSON Decode

从我正在使用的平台中包含的json:decode库返回的表数据示例: '{“ 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”:“所有代码”,“ CODESET_ID”:359,“ ErrorMessage”:“”,“ S_AMOUNT”:0,“ T_AMOUNT” :2500}'

我尝试了成对和ipair的多次迭代,但是似乎无法让我的代码区分行。

这给了我第一行数据:

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

但是那些指出它的返回错误应该是一个表,但是没有nil

我希望能够逐行解析此代码,甚至不需要按特定的返回顺序进行解析,我只需要数据即可使用它。

1 个答案:

答案 0 :(得分:0)

首先,将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