使用Lua CJSON库进行encode与decode操作完成对Json数据转化

                 

本篇介绍如何在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 实例获取到之后进行添加如下代码:

1

2

3

CCLuaStack *pStack = pEngine->getLuaStack();

lua_State* L = pStack->getLuaState();

luaopen_lua_extensions(L);

如下图所示:

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

对数据进行encode与decode操作:

1

2

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)

-- 打印结果: {"Himi":"himigame.com"}

--json转数据

local data = cjson.decode(jsonData)

print(data.Himi)

-- 打印结果: himigame.com

稍微复杂一些的数据:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

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"

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