当前通过curl
发布此数据:
{"test2":"hello","test3":"world"}
我的POST是这样的:
curl --header "Content-Type: application/json" --request POST --data '{"test2":"hello","test3":"world"}' http://localhost/test
这是我要求的一部分:
ngx.req.read_body()
local data = ngx.req.get_body_data()
if not data then
ngx.say("err: ",err)
return
end
ngx.status = ngx.HTTP_OK
local eJson = cjson.encode(data)
local dJson = cjson.decode(eJson) -- decode json to lua table
ngx.say("Encoded: "..eJson);
ngx.say("Decoded: "..dJson);
编码和解码的Json输出:
Encoded: "{\"test2\":\"hello\",\"test3\":\"world\"}"
Decoded: {"test2":"hello","test3":"world"}
我相信它应该是这样的:
{"test" = "hello", "test2" = "world"}
我为什么会得到不同的输出?
答案 0 :(得分:0)
好的,我找到了解决方案,似乎我不得不再解码一次。
local dJson = cjson.decode(eJson)
-- first decode (made it from stringified JSON into a JSON)
local d2Json = cjson.decode(dJson)
-- second decode (made it from JSON into a table)
希望这对在那里的人有帮助。