无法从nginx lua获取正确的表格键?

目前发布的数据是以下格式:

{"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("连接失败:", 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)
               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("设置键值失败:", err)
                     return
                   end
             end
           ';

我在这里做错了什么?

点赞
用户4403144
用户4403144

如果代码期望通过Lua表进行迭代,那么它不会处理你正在测试的JSON格式的字符串:

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

作为Lua表,它应该是:

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

现在,为什么它不能正确地解码JSON,等等,我无法从你发布的代码中得知。

2018-07-03 11:07:22