我有一个输入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))()