如何使用Lua模式解析JSON数据?

我正在将lua-module集成到nginx中。我想检查参数的值是否为空。每当我使用以下代码时,对于JSON请求,我会得到true结果

请求

{
  "data": {
    "user": {
      "username": "Ethen",
      "type": "PDF"
    }
  },
  "passport": {
    "user": "001"
  },
}

代码

local arg = ngx.req.get_body_data();
L="return "..arg:gsub('("[^"]-"):','[%1]=')
T=loadstring(L)()
ngx.print(T.data.user.username)
if T.data.user.username == "" then
    ngx.say("用户名为空");
end

但当我使用这个请求时,我会得到一个错误(尝试调用空值堆栈回溯) 请求

    {
    "reference"    : "567456314",
    "callback_url" : "http://www.example.com/",
    "verification_mode" : "any",

    "document"         : {
        "proof"           : "data:image/png;base64,iVBOR=“,
        "additional_proof": "data:image/png;base64,iVBORw0=",
        "supported_types" : ["id_card","driving_license","passport"],
        "expiry_date"     : "",
        "document_number" : ""
    },

    "address"         : {
        "proof"            : "data:image/png;base64,iVBORw0KG=",
        "supported_types"  : ["id_card","bank_statement"],
        "name"             : "",
        "issue_date":""
    }
}

代码

local arg = ngx.req.get_body_data();
L="return "..arg:gsub('("[^"]-"):','[%1]=')
T=loadstring(L)()
ngx.print(T.document.proof)
if T.document.proof == "" then
    ngx.say("证明为空");
end

问题及解决方案是什么?……提前谢谢!

点赞