Задать вопрос
@smilexcasper

Как в nginx — lua распарсить массив?

Получаю тело ответа от php через ngx.location.capture ,где в ответе есть массив:
['success' => true, 'key1' => 'value1'];
Когда вывожу ngx.say("body:", res.body), то получаю res.body:array|
Как мне получить значение key1?
res.body.key1,res.body.["key1"],res.body[0] - не помогают
nginx.conf:
location /IdentityAccess/loginService {
            rewrite ^/IdentityAccess^/ /$1 break;
            proxy_pass http://identityaccess/login;
            proxy_redirect off;
        }

        location /IdentityAccess/login {
        lua_need_request_body on;
        content_by_lua '
        local res = ngx.location.capture("/IdentityAccess/loginService",{ method = ngx.HTTP_POST,body=ngx.var.request_body })
        if res then
        nxg.var.resbody = res.body
        ngx.say("status: ", res.status)
        ngx.say("body:", res.body)
        else
        ngx.say("error")
        end
        ';
        }
  • Вопрос задан
  • 621 просмотр
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
Lerg
@Lerg
Defold, Corona, Lua, GameDev
Должно быть
print(res.body.key1)
или
print(res.body['key1'])
Ответ написан
Комментировать
@smilexcasper Автор вопроса
Пробывал:
key = res.body.key1 и key = res.body.["key1"]
ngx.say("body:", key)
Ответ написан
Комментировать
@silverjoe
Может документация поможет?
https://github.com/openresty/lua-nginx-module#ngxl...

Выведите для дебага, все что получает ngx.location.capture - переменные и типы и разберете, может там таблица в таблице и еще в таблице
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы