歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Lua Table的序列化與反序列化函數

Lua Table的序列化與反序列化函數

日期:2017/3/1 10:31:02   编辑:Linux編程
Lua Table的序列化與反序列化函數
  1. table.tostring = function(t)
  2. local mark={}
  3. local assign={}
  4. local function ser_table(tbl,parent)
  5. mark[tbl]=parent
  6. local tmp={}
  7. for k,v in pairs(tbl) do
  8. local key= type(k)=="number" and "["..k.."]" or "[".. string.format("%q", k) .."]"
  9. if type(v)=="table" then
  10. local dotkey= parent.. key
  11. if mark[v] then
  12. table.insert(assign,dotkey.."='"..mark[v] .."'")
  13. else
  14. table.insert(tmp, key.."="..ser_table(v,dotkey))
  15. end
  16. elseif type(v) == "string" then
  17. table.insert(tmp, key.."=".. string.format('%q', v))
  18. elseif type(v) == "number" or type(v) == "boolean" then
  19. table.insert(tmp, key.."=".. tostring(v))
  20. end
  21. end
  22. return "{"..table.concat(tmp,",").."}"
  23. end
  24. return "do local ret="..ser_table(t,"ret")..table.concat(assign," ").." return ret end"
  25. end
  26. table.loadstring = function(strData)
  27. local f = loadstring(strData)
  28. if f then
  29. return f()
  30. end
  31. end

更多關於Lua的詳細信息,或者下載地址請點這裡

Copyright © Linux教程網 All Rights Reserved