动态获取 Lua 中的 Json 键值

Dynamically fetching the Json key value in Lua

我有一个输入 Json,我需要为其获取特定键的值。键名将是动态的,并将在输入中传递,如下所示 -

输入Json-

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

这里我需要动态获取code和message的值。如果我像下面这样直接给出路径,我就可以读取这些值 -

json_body["source"][1].code

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

local path = "source[1].code"

如何使用此路径变量值并获取此键的 Json 值。我在下面尝试过但它不起作用 -

json_body[path]

下面是我正在使用的示例 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))()