Lua+json

来源:互联网 发布:mac 终端退出编辑 编辑:程序博客网 时间:2024/05/29 16:47

转载自:http://www.himigame.com/lua-game/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:      http://vdisk.weibo.com/s/xQ-P6

 

 第二步:将下载的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操作:

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
32
        ----带数组的复杂数据-----
        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

0 0