【问题标题】:Dynamically fetching the Json key value in LuaLua中动态获取Json键值
【发布时间】:2022-03-11 18:00:04
【问题描述】:

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

输入 Json -

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

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

json_body["source"][1].code

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

本地路径 = "source[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]

【问题讨论】:

  • 试试local value = assert(load("return "..path, nil, "t", json_body))()
  • 感谢@EgorSkriptunoff 的回复。我试过了,它奏效了。

标签: arrays json lua


【解决方案1】:

正如@EgorSkriptunoff 所建议的,下面的代码有效 -

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

【讨论】:

    猜你喜欢
    • 2011-04-21
    • 2021-08-09
    • 1970-01-01
    • 2019-09-30
    • 2016-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-19
    相关资源
    最近更新 更多