如何在Lua中将字符串转换为表

我有一个以字符串形式呈现的表格数据。 示例如下:

{"engName1":"HOLDER","validDurPeriod":3,"engName2":"INFORMATION","appStatus":2,"stayExpDate":"01/10/2012","engName3":"","appExpDate":"12/04/2010"}

我该如何将它转换为适当的表格类型变量,以便可以访问键。我是lua的新手,不清楚是否有任何现有的方法实现这一点。

点赞
用户735446
用户735446

Lua 有很多 JSON 解析器,例如 dkjson

local json = require ("dkjson")

local str = [[
{
  "numbers": [ 2, 3, -20.23e+2, -4 ],
  "currency": "\u20AC"
}
]]

local obj, pos, err = json.decode (str, 1, nil)
if err then
  print ("Error:", err)
else
  print ("currency", obj.currency)
  for i = 1,#obj.numbers do
    print (i, obj.numbers[i])
  end
end

输出:

currency1   2
2   3
3   -2023
4   -4
2014-03-31 09:35:58
用户107090
用户107090

尝试使用这样的代码开始吧

J=[[
{"engName1":"HOLDER","validDurPeriod":3,"engName2":"INFORMATION","appStatus":2,"stayExpDate":"01/10/2012","engName3":"","appExpDate":"12/04/2010"}
]]
J=J:gsub("}",",}")
L={}
for k,v in J:gmatch('"(.-)":(.-),') do
    L[k]=v
    print(k,v)
end

你还需要将一些值转换为数字并去除引号。

或者,如果你相信源字符串,你可以让 Lua 去做这个艰巨的工作。只需将循环替换为以下代码:

J=J:gsub('(".-"):(.-),','[%1]=%2,\n')
L=loadstring("return "..J)()
2014-03-31 11:23:18