无法在Nginx Lua中解码JSON?

时间:2018-07-10 08:33:02

标签: json curl nginx post lua

当前通过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"}

我为什么会得到不同的输出?

1 个答案:

答案 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)

希望这对在那里的人有帮助。