Lua读取/解析json文件

JSON文件是最最常用的配置文档,这个例子展示了如何读取其中的内容,

实现的功能:

  1. 使用dkjson模块,如系统没有,使用luarocks安装
  2. 路径中~的扩展,得到完整路径
  3. 读取json文件中的字符串
  4. 用dkjson将字符串decode为table
  5. 取任意一个key的value值
  6. 遍历整个table

知识点:

io.popen([prog,[mode]]的学习和使用,类似于os.execute()

local json = require "dkjson"

-- table config
local config = {}
function config.explainuser(pathstr)
    local tmp = "echo "..pathstr
    local filepath = io.popen(tmp)
    local real_path = filepath:read()
    filepath:close()
    return real_path
end
--[[
io.popen()
-- io.popen ()
-- 在额外的进程中启动程序prog,并返回用于prog的文件句柄
-- 1. prog为一条指令时,返回的是指令的执行结果,通过read()来读取内容
-- 2. prog为一个文件时,返回的是文件句柄,意为打开文件,通过read(*.a)读取文件内容
--]]

local path = config.explainuser("~/jsonfilefolder/jsonfilename.json")
--print("-->"..path)

-- read string in file path
local file_point = io.open(path, "r")
local str = nil
if file_point == nil then
    print("can't open json file:"..path)
else
    str = file_point:read("*a")
    file_point:close()
end

--to json
local _json_info = {}
if str ~= nil then
    _json_info = json.decode(str)
    if _json_info == nil then
        print("json format error from file:"..path)
    end
else
    print("Got nil from file:"..path)
end

-- get value of key
function config.getValue(key)
    return _json_info[key]
end

-- traversal table
function config.traversal()
    for key, value in pairs(_json_info) do
        print("name:" .. key .. "-- value:" .. value)
    end
end
--config.traversal()
return config

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

auspark

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值