本站文章均为
李华明Himi 原创,转载务必在明显处注明:
转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/lua-game/1337.html
转载自【黑米GameDev街区】 原文链接: 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解压并加入我们的项目中,如下图:
第三步:加载我们的cjson
打开项目的AppDelegate.cpp ,
(1)首先导入 #include “lua_extensions.h”
(2)在此类的applicationDidFinishLaunching函数中,在CCLuaStack 实例获取到之后进行添加如下代码:
1
2
3
|
CCLuaStack *
pStack
=
pEngine
-
&
gt
;
getLuaStack
(
)
;
lua_State*
L
=
pStack
-
&
gt
;
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
|
:Himi: OK,本篇结束,大家有任何疑问可以及时交流,也可以到Himi的Lua交流群:250916715