我有一个字符串形式的表数据。样品如下:
{"engName1":"HOLDER","validDurPeriod":3,"engName2":"INFORMATION","appStatus":2,"stayExpDate":"01/10/2012","engName3":"","appExpDate":"12/04/2010"}
如何将其转换为正确的表类型变量,以便我可以访问密钥。我是lua的新手,我不知道是否有任何现有方法可以这样做。
答案 0 :(得分:3)
Lua可以使用plenty个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
输出:
currency €
1 2
2 3
3 -2023
4 -4
答案 1 :(得分:1)
尝试使用此代码开始
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)()