淘先锋技术网

首页 1 2 3 4 5 6 7

在linux下安装lua

curl -R -O http://www.lua.org/ftp/lua-5.3.0.tar.gz
tar zxf lua-5.3.0.tar.gz
cd lua-5.3.0
make linux test
make install

cjson编译

  • Lua CJSON 是 Lua 语言提供高性能的 JSON 解析器和编码器,其性能比纯 Lua 库要高 10 到 20 倍。Lua CJSON 完全支持 UTF-8 ,无需依赖其他非 Lua/LuaJIT 的相关包。
 wget http://www.kyne.com.au/~mark/software/download/lua-cjson-2.1.0.tar.gz
 tar -zxf lua-cjson-2.1.0.tar.gz
 cd lua-cjson-2.1.0
 make all
  • 将cjson库加到lua库目录
cp cjson.so /usr/local/lib/lua/5.3
chmod 755 /usr/local/lib/lua/5.3/cjson.so

lua解析json字符串

案例一:

  • ipairs 用于遍历数组的迭代器函数, pairs 用于遍历table的迭代器函数
> cjson = require "cjson"
> json = cjson.new()
> json_text = '{"foo":"bar"}'
> value = json.decode(json_text)
> for k,v in pairs(value) do print("json",k,v) end
json	foo	bar
> list = {foo="bar"}
> return json.encode(list)
{"foo":"bar"}

案例二:

  • test.json
{
    "str":"hello world",
    "configs":[
        {
            "user":"ubuntu",
            "password":"123456",
            "ip":"192.168.1.12"
        },
        {
            "user":"ubuntu1",
            "password":"45678",
            "ip":"192.168.1.23"
        }
    ]
}
  • test.lua
#! /usr/local/bin/lua
function FileRead()
    local file = io.open("test.json","r")
    //*a表示从当前位置获取文件内容
    local json = file:read("*a")
    file:close()
    return json
end
local cjson = require "cjson"
local file = FileRead()
local json = cjson.decode(file)

for i,w in ipairs(json.configs) 
do
	//两个点是字符串连接符
    print("user:"..w.user)
    print("password:"..w.password)
end
print("str:"..json.str)

案例三:

Lua 实现JSON解析器