天天看點

【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