将JSON的所有属性和值插入到LUA表中

我想将JSON的属性名和值插入到LUA表中。

local function convert_table(tbl_test)
 local output_table = {}
  for i, v in pairs(tbl_test) do
    output_table [string.lower(i)] = string.lower(v)
  end
 return output_table
end
  local  test  =  cjson.decode(inputJson)
  local  final =  convert_table(test)

如果我的JSON是这样的,那么这个方法可以运行

 {    "test": "abc",
      "test1": "EDF",
      "test2": "PNG" }

但对于以下JSON(嵌套JSON)则无法工作

{
  "upper": {
    "test": "abc",
    "test1": "EDF",
    "test2": "PNG",
  },
  "lower": {
    "test3": "aabc",
    "test4": "edfa",
    "test5": "png"
  }
}
点赞
用户4984564
用户4984564

虽然使用 Lua 的模式匹配可以解析像上面的 JSON 示例那样的嵌套结构,但这远远不是它的预期用途,通常也复杂到只有专门的库才能胜任。

更可行的解决方案是: 要么使用更强大的工具(如 LPEG ¹)来构建自己的解析器(这仍需要时间),要么只需使用 Lua 中可用的任何 JSON 解析器(如²³)就可以了。

2019-02-07 09:22:10