先上代码
function luautil.serialize(t, sort_parent, sort_child)
local mark={}
local assign={}
local function ser_table(tbl,parent)
mark[tbl]=parent
local tmp={}
local sortList = {};
for k,v in pairs(tbl) do
sortList[#sortList + 1] = {key=k, value=v};
end
if tostring(parent) == "ret" then
if sort_parent then table.sort(sortList, sort_parent); end
else
if sort_child then table.sort(sortList, sort_child); end
end
for i = 1, #sortList do
local info = sortList[i];
local k = info.key;
local v = info.value;
local key= type(k)=="number" and "["..k.."]" or k;
if type(v)=="table" then
local dotkey= parent..(type(k)=="number" and key or "."..key)
if mark[v] then
table.insert(assign,dotkey.."="..mark[v])
else
table.insert(tmp, "\n"..key.."="..ser_table(v,dotkey))
end
else
if type(v) == "string" then
table.insert(tmp, key..'="'..v..'"');
else
table.insert(tmp, key.."="..tostring(v));
end
end
end
return "{"..table.concat(tmp,",").."}";
end
return "do local ret=\n\n"..ser_table(t,"ret")..table.concat(assign," ").."\n\n return ret end"
end
function luautil.split(str, delimiter)
if (delimiter=='') then return false end
local pos,arr = 0, {}
-- for each divider found
for st,sp in function() return string.find(str, delimiter, pos, true) end do
table.insert(arr, string.sub(str, pos, st - 1))
pos = sp + 1
end
table.insert(arr, string.sub(str, pos))
return arr
end
function luautil.writefile(str, file)
os.remove(file);
local file=io.open(file,"ab");
local len = string.len(str);
local tbl = luautil.split(str, "\n");
for i = 1, #tbl do
file:write(tbl[i].."\n");
end
file:close();
end
1、基础功能抄自云风早期的代码。 这里稍微添加了排序功能,可以传入排序函数,否则表是按哈希排序的,输出后会乱掉。
2、添加了writefile函数,因为lua的文件写入有最大字节数限制,所以一行一行写入。
分享到:
相关推荐
通过执行python脚本(jsonToLua.py)
Lua的table元表自我学习笔记分享。--lua元表总结 --1、__index的运用 (调用table的一个不存在的索引时,会使用到元表的__index元方法,搜索元表是否也有改索引,__index可以是一个函数也可是一个table。)
lua程序实现了对两个文件的比较;找出两个表中的非重叠项和键值不同的项
Lua中的table函数库.pdf Lua初学 table 经典有用 有用 ,分享一下。
详细描述Lua和C之间相互传递Table类型数据 /* ====================================================== */ // 遍历Lua传入的Table类型参数, 获取它的Key/Value, 其关键操作是 lua_next() // lua_next() 返回1表示...
luaserlua序列化支持key类型为string, number支持value类型为string, number, table支持循环引用支持加密序列化支持loadstring反序列化使用示例local t = { a = 1, b = 2}local g = { c = 3, d = 4, t}t.rt = glocal...
步骤: 1. 通过 Navicat Mysql 或 Navicat Premium 先到处表成json文件。...2. 把导出的文件复制到 Json2Lua 文件夹下的 json文件夹下。 3. 双击运行 run.bat 4. 没有报错的话,会把转换后的文件输出到 lua文件夹下。
lua脚本问文件哈哈哈lua脚本问文件哈哈哈lua脚本问文件哈哈哈lua脚本问文件哈哈哈lua脚本问文件哈哈哈lua脚本问文件哈哈哈lua脚本问文件哈哈哈lua脚本问文件哈哈哈lua脚本问文件哈哈哈lua脚本问文件哈哈哈lua脚本问...
lua 读写ini文件
使用lua脚本工具将excel文件文件中的数据直接生成sql文件
主要介绍了Lua判断一个目录或文件是否存在的方法,Lua中可以使用io.open判断文件或目录是否存在,本文总结了判断方法,并给出了一个自定义函数,需要的朋友可以参考下
lua库函数
解决Lua文件反编译后汉字乱码问题。开发环境vs2013,语言c#
解决 protobuf-gen-lua 跨文件引用message,直接覆盖这个文件,重新生成lua文件,就能解析到跨文件引用的message
将相同的table 提取出来,实测减了20mlua内存
unity xlua lua5.4.4最新版lua库文件
nginx +lua 实现 访问远程地址 下载文件 环境配置: 启动tomcat 把要下载的文件放到跟目录比如:pdf zip 等 启动nginx 访问nginx lua 打开socket 访问tomcat 文件路径,并下载到本地
Lua的table库函数insert、remove、concat、sort详细介绍1
配合ulua使用的导表工具,把excel表直接导成lua可用的table
lua json文件转换 数据编排 lua配置表转成 json配置表