当前发布此数据:
{"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
';
我在这里做什么错了?
答案 0 :(得分:1)
如果代码期望通过Lua表进行迭代,则它将无法处理您正在测试的JSON格式的字符串:
{"test":"hello","test2":"world"}
作为Lua表,应该是:
{"test" = "hello", "test2" = "world"}
现在,为什么它不能正确解码JSON等,我无法从您发布的代码中得知。