本篇介紹如何在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
|