Не удалось получить правильный ключ таблицы от nginx lua? - PullRequest
0 голосов
/ 03 июля 2018

В настоящее время публикует эти данные:

{"test":"hello","test2":"world"}

Заголовок это:

"Content-Type: application/json"

В настоящее время я пытаюсь перебрать json, но в моем коде он по какой-то причине уже обрабатывает опубликованные данные как table. Так что это бесполезно, даже когда я пытался кодировать и декодировать JSON в таблицу

В любом случае, когда я перебираю его, я получаю только один цикл, где ключ такой:

"test":"hello"

Мне интересно, что здесь пошло не так. Я пытаюсь перебрать каждую клавишу и установить значение в redis.

Ключ должен быть таким:

test

Вот моя content_by_lua часть:

content_by_lua '
             local cjson = require "cjson"
             local redis = require "resty.redis"
             local red = redis:new()
             red:set_timeout(1000) -- 1 sec

             local ok, err = red:connect("127.0.0.1", 6379)
             if not ok then
                ngx.say("failed to connect: ", err)
                return
             end


             ngx.header.content_type = "application/json; charset=utf-8"
             ngx.req.read_body()

             local data, err = ngx.req.get_post_args()
             if not data then
               ngx.say("err: ",err)
               return
             end

             ngx.status = ngx.HTTP_OK

             for key, val in pairs(data) do
                   ok, err = red:set(key, val)
                   if not ok then
                     ngx.say("failed to set key: ", err)
                     return
                   end
             end
           ';

Что я тут не так сделал?

1 Ответ

0 голосов
/ 03 июля 2018

Если код ожидает итерацию таблицы Lua, он не будет обрабатывать строку в формате JSON, с которой вы тестируете:

{"test":"hello","test2":"world"}

Как таблица Lua, она должна быть:

{"test" = "hello", "test2" = "world"}

Теперь, почему он неправильно декодирует JSON и т. Д., Что я не могу понять из кода, который вы опубликовали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...