天天看点

【COCOS2DX-LUA 脚本开发之十】使用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 的相关包。

下面我们来详细介绍如何搭建cjson在lua的使用环境:

第一步:下载cjson包  cjson.zip: 

 第二步:将下载的cjson.zip解压并加入我们的项目中,如下图:

【COCOS2DX-LUA 脚本开发之十】使用LUA CJSON库进行ENCODE与DECODE操作完成对JSON数据转化

第三步:加载我们的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);

如下图所示:

【COCOS2DX-LUA 脚本开发之十】使用LUA CJSON库进行ENCODE与DECODE操作完成对JSON数据转化

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

 对数据进行encode与decode操作:

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

稍微复杂一些的数据:

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"

        -- 打印结果: {"age":"23","testarray":{"array":[8,9,11,14,25]},"himi":"himigame.com"}

        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

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