如何将表格转换为字符串再转换回来?

我正在处理表格,想要将表格转换为字符串再转换回来。 首先我做了这个:

local function TableToString(t)
return "{"..table.concat(t,",").."}"
end

local MyTable = {4,5,21,7}
print(TableToString(MyTable))--它打印出 {4,5,21,7}

但是然后我尝试了一个带有键和值的表格:

local MyTable2 = {Key1=5819,Key2=28194,Key3=1888}
print(TableToString(MyTable2))--它打印出 " "

所以我做了这个:

local function TableToString(t)
if #t == 0 then
TempTab={}
for i,v in next,t do
table.insert(TempTab,i.."="..v)
end
t=TempTab
end
return "{"..table.concat(t,",").."}"
end

local MyTable = {4,5,21,7}
local MyTable2 = {Key1=5819,Key2=28194,Key3=1888}

print(TableToString(MyTable)
)--它打印出 {4,5,21,7}
print(TableToString(MyTable2))--它打印出 {Key1=5819,Key2=28194,Key3=1888}

但是,一个数组的数组

local MyTable3 = {Key1={Subkey1={}},Key2={Subkey2={}},Key3={Subkey3={}}}
print(TableToString(MyTable3))--[错误]尝试连接本地'v'(一个表值)

现在我不知道该怎么办了。 已修复

local Is=setmetatable({},{
  __index=function(t,k)
  compare = function(to)
  if type(to):lower() == k:lower() then
  return true
  end
  return false
  end
  if k:lower() == "matrix" then
  compare = function (to)
  if type(to) == "table" and #to == 0 then
  return true
  end
  return false
  end
  end
  return compare
  end
})

function TTS(t)
if Is.Table(t) then
local TempTab={}
if not Is.matrix(t) then
return "{"..table.concat(t,",").."}"
else
for i,v in pairs(t) do
if not Is.Table(v) then
table.insert(TempTab,i.."="..v)
else
table.insert(TempTab,i.."="..TTS(v))
end
end
return "{"..table.concat(TempTab,",").."}"
end
end
end
local MyTable3 = {Key1={Subkey1={}},Key2={Subkey2={}},Key3={Subkey3={}}}
print(TableToString(MyTable3))--打印出 {Key1={Subkey1={}},Key2={Subkey2={}},Key3={Subkey3={}}}

这是一个函数,如果有人想要使用它。;)

点赞