Как для разбора JSON-данных с использованием шаблонов на Lua?

Я интегрируя в Lua-модуль в nginx. Я хочу проверить значение параметра пустое или нет. Всякий раз, когда я использую следующий код, я получаю истинный результат против JSON-запроса

Запрос

{
  "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("Empty username");
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("Empty proof");
end  

В чем проблема и решение??....Спасибо заранее!!

+1
2019-09-17 12:15:29
источник
0 ответов

Посмотрите другие вопросы по меткам