Lua使用cURL从json数组中获取数据

时间:2017-09-08 15:02:57

标签: json curl lua

我需要发出get请求并从json数组中检索数据,但我不知道如何获取特定的数组索引并打印其值。似乎没有任何关于它的在线信息。

local curl = require("lcurl")

c = curl.easy{
    url = 'http://example.com/api/?key=1234',
    httpheader = {
      "Content-Type: application/json";
    };
    writefunction = io.stderr
  }
  c:perform()
c:close()

返回

[
    {
        "id": "1",
        "name": "admin"
    }
]

但是如何让它只打印name

的值

1 个答案:

答案 0 :(得分:1)

您可以使用某些JSON库,例如this one

local json = require'json'

local function callback(path, json_type, value, pos, pos_last)
   local elem_path = table.concat(path, '/')  -- element's path
   --print(elem_path, json_type, value, pos, pos_last)
   if elem_path == "1/name" then  -- if current element corresponds to JSON[1].name
      print(value)
   end
end

local JSON_string = [[

[
    {
        "id": "1",
        "name": "admin"
    }
]

]]

json.traverse(JSON_string, callback)

输出:

admin

另一个解决方案(更简单,完全解码JSON):

local json = require'json'

local JSON_string = [[

[
    {
        "id": "1",
        "name": "admin"
    }
]

]]

print(json.decode(JSON_string)[1].name)