macOS 系统下安装Lua及lua-cjson
lua安装及部署
具体操作步骤如下:
- curl -R -O http://www.lua.org/ftp/lua-5.2.3.tar.gz
- tar zxf lua-5.2.3.tar.gz
- cd lua-5.2.3
- make macosx
- make test
- lua
- sudo make install
然后输入lua就看到lua的交互模式了:
mtlgx@MTlgxdeMacBook-Pro ~> lua
Lua 5.3.0 Copyright (C) 1994-2015 Lua.org, PUC-Rio
>
lua-cjson 安装及部署
在安装lua-cjson时在网上查找了很多文章,关于具体的安装方法众说纷纭,主要原因是因为lua-cjson在安装时需要进行配置的更改,以下是经过实操得到的具体安装步骤。
-
wget http://www.kyne.com.au/~mark/software/download/lua-cjson-2.1.0.tar.gz 下载安装包
-
tar zxvf lua-cjson-2.1.0.tar.gz
-
cd lua-cjson-2.1.0/
-
修改配置文件
- 修改lua版本,默认版本为5.1 (我的当前版本为5.3,可以通过lua -v 查看版本信息)
- 注释掉 CJSON_LDFLAGS = -shared
- 设置CJSON_LDFLAGS = -bundle -undefined dynamic_lookup (这里就是OSX和Unix的区别,bundle是Mac使用的文件格式,如果不使用这些选项,可能引起“multiple lua vms detected”错误)
-
保存配置文件然后退出
-
make
-
sudo make install
-
检查 /usr/local/lib/lua/5.3文件夹下是否存在cjson.so文件
-
如果存在则代表安装成功
lua内操作json示例
local cjson = require "cjson"
-- 对象类型
local lua_object = {
["name"] = "Jiang",
["age"] = 24,
["addr"] = "BeiJing",
["email"] = "1569989xxxx@126.com",
["tel"] = "1569989xxxx"
}
local val = cjson.encode(lua_object)
print(val)
res = cjson.decode(val)
print(res.age)
local retTable = {}; --最终产生json的表
--顺序数值
local intDatas = {};
intDatas[1] = 100;
intDatas[2] = "100";
--数组
local aryDatas = {};
aryDatas[1] = {};
aryDatas[1]["键11"] = "值11";
aryDatas[1]["键12"] = "值12";
aryDatas[2] = {};
aryDatas[2]["键21"] = "值21";
aryDatas[2]["键22"] = "值22";
--对Table赋值
retTable["键1"] = "值1";
retTable[2] = 123;
retTable["int_datas"] = intDatas;
retTable["aryDatas"] = aryDatas;
--将表数据编码成json字符串
local jsonStr = cjson.encode(retTable);
print(jsonStr);
--结果是:{"int_datas":[100,"100"],"2":123,"键1":"值1","aryDatas":[{"键12":"值12","键11":"值11"},{"键21":"值21","键22":"值22"}]}
local sampleJson = [[{"age":"23","testArray":{"array":[8,9,11,14,25]},"Himi":"himigame.com"}]];
--解析json字符串
local data = cjson.decode(sampleJson);
--打印json字符串中的age字段
print(data["age"]);
--打印数组中的第一个值(lua默认是从0开始计数)
print(data["testArray"]["array"][1]);