本站文章均为李华明Himi原创,转载务必在明显处注明:(作者新浪微博:@李华明Himi)
width="150" height="210" frameborder="0" scrolling="no" src="http://widget.weibo.com/relationship/bulkfollow.php?language=zh_cn&uids=1916000601&wide=1&color=FFFFFF,FFFFFF,0082CB,666666&showtitle=0&showinfo=1&sense=0&verified=1&count=1&refer=http%3A%2F%2Fwww.himigame.com%2Flua1%2F1337.html&dpc=1" style="border-width: 0px; margin: 0px; padding: 0px; font-family: arial, helvetica, clean, sans-serif; font-size: 12px; line-height: 16px; text-align: left; ">
本篇介绍如何在lua中对数据进行json的encode与decode,这里Himi采用cjson进行。首先简单介绍下cjson:
Lua CJSON 是 Lua 语言提供高性能的 JSON 解析器和编码器,其性能比纯 Lua 库要高 10 到 20 倍。Lua CJSON 完全支持 UTF-8 ,无需依赖其他非 Lua/LuaJIT 的相关包。
文档链接: http://www.kyne.com.au/~mark/software/lua-cjson-manual.html
下面我们来详细介绍如何搭建cjson在lua的使用环境:
第一步:下载cjson包 cjson.zip:
cjson.zip: http://vdisk.weibo.com/s/xQ-P6
第二步:将下载的cjson.zip解压并加入我们的项目中,如下图:
第三步:加载我们的cjson
打开项目的AppDelegate.cpp ,
(1)首先导入 #include “lua_extensions.h”
(2)在此类的applicationDidFinishLaunching函数中,在CCLuaStack 实例获取到之后进行添加如下代码:
CCLuaStack *pStack = pEngine->getLuaStack();
lua_State* L = pStack->getLuaState();
luaopen_lua_extensions(L);
如下图所示:
OK,完成如上几步,我们就可以在lua中使用cjson啦! 下面介绍通过lua cjson对数据进行json的转换:
对数据进行encode与decode操作:
-------简单数据-------
local tab ={}
tab["Himi"] = "himigame.com"
--数据转json
local cjson = require "cjson"
local jsonData = cjson.encode(tab)
print(jsonData)
-- 打印结果: {"Himi":"himigame.com"}
--json转数据
local data = cjson.decode(jsonData)
print(data.Himi)
-- 打印结果: himigame.com
稍微复杂一些的数据:
----带数组的复杂数据-----
local _jsonArray={}
_jsonArray[1]=8
_jsonArray[2]=9
_jsonArray[3]=11
_jsonArray[4]=14
_jsonArray[5]=25
local _arrayFlagKey={}
_arrayFlagKey["array"]=_jsonArray
local tab = {}
tab["Himi"]="himigame.com"
tab["testArray"]=_arrayFlagKey
tab["age"]="23"
--数据转json
local cjson = require "cjson"
local jsonData = cjson.encode(tab)
print(jsonData)
-- 打印结果: {"age":"23","testArray":{"array":[8,9,11,14,25]},"Himi":"himigame.com"}
--json转数据
local data = cjson.decode(jsonData)
local a = data.age
local b = data.testArray.array[2]
local c = data.Himi
print("a:"..a.." b:"..b.." c:"..c)
-- 打印结果: a:23 b:9 c:himigame.com
OK,本篇结束,大家有任何疑问可以及时交流,也可以到Himi的Lua交流群:250916715