【COCOS2DX-LUA 脚本开发之十】使用Lua CJSON库进行encode与decode操作

 

本站文章均为 李华明Himi 原创,转载务必在明显处注明:(作者新浪微博: @李华明Himi 

转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/lua1/1337.html 

          ☞ 点击订阅 ☜
 本博客最新动态!及时将最新博文通知您!


                 

 
 

 

本篇介绍如何在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解压并加入我们的项目中,如下图:

QQ20130416-1

第三步:加载我们的cjson

打开项目的AppDelegate.cpp ,

 (1)首先导入       #include “lua_extensions.h”

(2)在此类的applicationDidFinishLaunching函数中,在CCLuaStack 实例获取到之后进行添加如下代码:

 

  
  
  
  
  1. CCLuaStack *pStack = pEngine->getLuaStack(); 
  2.     lua_State* L = pStack->getLuaState(); 
  3.     luaopen_lua_extensions(L); 
 

 

如下图所示:

QQ20130416-2

 

OK,完成如上几步,我们就可以在lua中使用cjson啦! 下面介绍通过lua cjson对数据进行json的转换:

 对数据进行encode与decode操作:

 

  
  
  
  
  1. -------简单数据------- 
  2. local tab ={} 
  3. tab["Himi"] = "himigame.com" 
  4. --数据转json 
  5. local cjson = require "cjson" 
  6. local jsonData = cjson.encode(tab) 
  7.   
  8. print(jsonData)  
  9. -- 打印结果:  {"Himi":"himigame.com"} 
  10.   
  11. --json转数据 
  12. local data = cjson.decode(jsonData) 
  13.   
  14. print(data.Himi)  
  15. -- 打印结果:  himigame.com 
 

 

稍微复杂一些的数据:

 

  
  
  
  
  1. ----带数组的复杂数据----- 
  2. local _jsonArray={} 
  3. _jsonArray[1]=8 
  4. _jsonArray[2]=9 
  5. _jsonArray[3]=11 
  6. _jsonArray[4]=14 
  7. _jsonArray[5]=25 
  8.   
  9. local _arrayFlagKey={} 
  10. _arrayFlagKey["array"]=_jsonArray 
  11.   
  12. local tab = {} 
  13. tab["Himi"]="himigame.com" 
  14. tab["testArray"]=_arrayFlagKey 
  15. tab["age"]="23" 
  16.   
  17. --数据转json 
  18. local cjson = require "cjson" 
  19. local jsonData = cjson.encode(tab) 
  20.   
  21. print(jsonData) 
  22. -- 打印结果: {"age":"23","testArray":{"array":[8,9,11,14,25]},"Himi":"himigame.com"
  23.   
  24. --json转数据 
  25. local data = cjson.decode(jsonData) 
  26. local a = data.age 
  27. local b = data.testArray.array[2
  28. local c = data.Himi 
  29.   
  30. print("a:"..a.."  b:"..b.."  c:"..c) 
  31. -- 打印结果: a:23  b:9  c:himigame.com 
 

 

:Himi:    OK,本篇结束,大家有任何疑问可以及时交流,也可以到Himi的Lua交流群:250916715

 

你可能感兴趣的:(json,lua,cocos2dx,cjson)