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

简介:

本篇介绍如何在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,如需转载请自行联系原作者
目录
相关文章
|
1月前
|
缓存 分布式计算 NoSQL
大数据-43 Redis 功能扩展 Lua 脚本 对Redis扩展 eval redis.call redis.pcall
大数据-43 Redis 功能扩展 Lua 脚本 对Redis扩展 eval redis.call redis.pcall
29 2
|
5月前
|
消息中间件 NoSQL Java
Redis系列学习文章分享---第六篇(Redis实战篇--Redis分布式锁+实现思路+误删问题+原子性+lua脚本+Redisson功能介绍+可重入锁+WatchDog机制+multiLock)
Redis系列学习文章分享---第六篇(Redis实战篇--Redis分布式锁+实现思路+误删问题+原子性+lua脚本+Redisson功能介绍+可重入锁+WatchDog机制+multiLock)
227 0
|
2月前
|
存储 JSON Ubuntu
如何使用 Lua 脚本进行更复杂的网络请求,比如 POST 请求?
如何使用 Lua 脚本进行更复杂的网络请求,比如 POST 请求?
|
3月前
|
存储 NoSQL Redis
Tair的发展问题之在Redis集群模式下,Lua脚本操作key面临什么问题,如何解决
Tair的发展问题之在Redis集群模式下,Lua脚本操作key面临什么问题,如何解决
|
5月前
|
NoSQL API Redis
使用Redis Lua脚本实现高级限流策略
使用Redis Lua脚本实现高级限流策略
199 0
|
5月前
|
消息中间件 NoSQL Java
Spring Boot中使用Redis和Lua脚本实现延时队列
Spring Boot中使用Redis和Lua脚本实现延时队列
|
5月前
|
NoSQL Java Redis
redis的lua脚本
在 Lua 脚本中,可以使用redis.call()函数来执行Redis命令.
56 0
|
6月前
|
存储 NoSQL Redis
Redis的Lua脚本有什么作用?
Redis Lua脚本用于减少网络开销、实现原子操作及扩展指令集。它能合并操作降低网络延迟,保证原子性,替代不支持回滚的事务。通过脚本,代码复用率提高,且可自定义指令,如实现分布式锁,增强Redis功能和灵活性。
251 1
|
6月前
|
缓存 NoSQL Java
【Redis】5、Redis 的分布式锁、Lua 脚本保证 Redis 命令的原子性
【Redis】5、Redis 的分布式锁、Lua 脚本保证 Redis 命令的原子性
227 0
|
6月前
|
算法 NoSQL Java
springboot整合redis及lua脚本实现接口限流
springboot整合redis及lua脚本实现接口限流
266 0