首页 > 其他分享 >【COCOS2DX-LUA 脚本开发之十】使用Lua CJSON库进行encode与decode操作完成对Json数据转化

【COCOS2DX-LUA 脚本开发之十】使用Lua CJSON库进行encode与decode操作完成对Json数据转化

时间:2022-11-24 14:37:04浏览次数:67  
标签:之十 COCOS2DX lua cjson com Lua tab Himi local

本站文章均为​​李华明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

 

标签:之十,COCOS2DX,lua,cjson,com,Lua,tab,Himi,local
From: https://blog.51cto.com/xiaominghimi/5883899

相关文章