macOS 系统下安装Lua及lua-cjson

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"] = "[email protected]",
        ["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]);

你可能感兴趣的:(编程语言)