在Lua中动态获取Json键值



我有一个输入Json,我需要获得特定键的值。密钥名称将是动态的,并将像下面这样在输入中传递-

输入Json -

{
"error": "Bad Request"
"source": [
{
"code": "400",
"message": "Missing values"
}
]
}

这里我需要动态地获取代码和消息的值。如果我像下面这样直接给出路径,我就可以读取值-

json_body["source" [1] .code

但是这里json路径将被用户作为字符串在输入中传递,如下-

本地路径="来源[1].code"

我如何使用这个路径变量值并获得这个键的Json值。我在下面试过,但它不起作用-

json_body(路径)

下面是我使用的示例Lua代码-

local cjson = require("cjson.safe").new()
local function read_json_body(body)
if body then
return cjson.decode(body)
end
end
local json_body = read_json_body(buffered_data)
local message_path = "source[1].code"
local value = json_body[message_path]

我能够获得数组外的字段的值,如下-

local message_path = "error"
local value = json_body[message_path]

根据下面@EgorSkriptunoff的建议,代码工作-

local value = assert(load("return "..path, nil, "t", json_body))()

最新更新