【cocos2dx】在Lua中使用CJSON库进行Json数据转化

本站文章均为李华明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解压并加入我们的项目中,如下图:

QQ20130416-1

第三步:加载我们的cjson

打开项目的AppDelegate.cpp ,

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

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

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

如下图所示:

QQ20130416-2

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

对数据进行encode与decode操作:

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

稍微复杂一些的数据:

15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
----带数组的复杂数据-----
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"
"testArray"]=_arrayFlagKey
"age""23"
--数据转json
local cjson = require "cjson"
local jsonData = cjson.encode(tab)
print(jsonData)
-- 打印结果: {:"23",:{:[8,9,11,14,25]},monospace;font-size:1em;vertical-align:baseline;float:none;background-image:none;">"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

相关文章

    本文实践自 RayWenderlich、Ali Hafizji 的文章《...
Cocos-code-ide使用入门学习地点:杭州滨江邮箱:appdevzw@1...
第一次開始用手游引擎挺激动!!!进入正题。下载资源1:从C...
    Cocos2d-x是一款强大的基于OpenGLES的跨平台游戏开发...
1.  来源 QuickV3sample项目中的2048样例游戏,以及最近《...
   Cocos2d-x3.x已经支持使用CMake来进行构建了,这里尝试...