lua2json
2013-11-26 21:56
344 查看
lua对象json序列化,很简单,没做中文的unicode编码了
local function bool2json(v)
return v and "true" or "false";
end
local function string2json(s)
return table.concat({"\"", s, "\""});
end
local allowedkey={
["boolean"]=true,
["number"]=true,
["table"]=true,
}
local function table2json(tb)
local s={};
for k, v in next, tb do
local kind=type(k);
if not allowedkey[type(k)] then
error(_from("{kind}类型不能做为json格式数据key", kind));
end
table.push(s, lua2json(k), ":", lua2json(v), ",");
end
return table.concat(s);
end
local function number2json(num)
return tostring(num);
end
local lua2jsonfuncs={
["boolean"]=bool2json,
["number"]=number2json,
["table"]=table2json,
["string"]=string2json
}
function _G.lua2json(v)
local kind=type(v);
local func=lua2jsonfuncs[kind];
if not func then
error(_from("{kind}类型不能转化为json格式数据", kind));
end
return func(v);
end
--[[-----------test--------------
dump(lua2json(true));
dump(lua2json(false));
dump(lua2json("absd"));
dump(lua2json({a=true, b=1, c='fwef', d={a=true, b=1, c='ffef'}}));
dump(lua2json{1,2,4,3}) ]]
local function bool2json(v)
return v and "true" or "false";
end
local function string2json(s)
return table.concat({"\"", s, "\""});
end
local allowedkey={
["boolean"]=true,
["number"]=true,
["table"]=true,
}
local function table2json(tb)
local s={};
for k, v in next, tb do
local kind=type(k);
if not allowedkey[type(k)] then
error(_from("{kind}类型不能做为json格式数据key", kind));
end
table.push(s, lua2json(k), ":", lua2json(v), ",");
end
return table.concat(s);
end
local function number2json(num)
return tostring(num);
end
local lua2jsonfuncs={
["boolean"]=bool2json,
["number"]=number2json,
["table"]=table2json,
["string"]=string2json
}
function _G.lua2json(v)
local kind=type(v);
local func=lua2jsonfuncs[kind];
if not func then
error(_from("{kind}类型不能转化为json格式数据", kind));
end
return func(v);
end
--[[-----------test--------------
dump(lua2json(true));
dump(lua2json(false));
dump(lua2json("absd"));
dump(lua2json({a=true, b=1, c='fwef', d={a=true, b=1, c='ffef'}}));
dump(lua2json{1,2,4,3}) ]]
相关文章推荐
- 《Lua 5.0的实现》第八章 - 结论和致谢
- 《Lua 5.0的实现》第七章 - 虚拟机
- 《Lua 5.0的实现》第六章 - 线程和协程
- 《Lua 5.0的实现》第五章 - 函数和闭包
- lua——table 构造式
- LuaPlus上手指南
- lua table函数库
- lua string库函数
- lua 语言基础
- Lua语言中pairs和ipairs的区别
- 利用CEGUI+Lua实现灵活的游戏UI框架(转)
- Lua5.1中的API函数
- lua Date和Time
- 访问者模式lua实现
- lua
- 《Lua 5.0的实现》第四章 - 表
- LUA元表和类的简单例子
- Lua快捷键
- 《Lua 5.0的实现》第三章 - 值的表现形式
- 解释器模式lua实现