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

本文介绍如何在Lua中使用LuaCJSON库进行JSON数据的编码与解码。LuaCJSON是一个高性能的JSON解析器和编码器,支持UTF-8且无需额外依赖。文章详细说明了cjson库的安装步骤及如何实现数据与JSON之间的相互转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本篇介绍如何在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 
 

 





本文转自 xiaominghimi 51CTO博客,原文链接:http://blog.51cto.com/xiaominghimi/1179366,如需转载请自行联系原作者
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值