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