LINUX.ORG.RU

Nginx + Lua вернуть JSON, как?

 ,


0

1

Добрый день Подскажите пожалуйста, как вернуть JSON в response? Есть сам JSON

{"1_sign_level":"0200200","2_sign_level":"0200300"}
Пробовал ngx.say и cjson.encodeНо ничего не получается. Помогите, пожалуйста, с кодом.

Ответ на: комментарий от goingUp

Не подходит, у меня на одном и том же урле разные JSON отдаются. В зависимости от тела поста. А с помощью Lua я вычитываю тела ПОСТа и хочу отдавать разные JSON, может есть другой сполсоб какой-то?

darksmoke
() автор топика
Ответ на: комментарий от darksmoke

Тогда пиши обработчик.

Только не надо требовать написать все за тебя.

Попробуй сначала сам, а если не ага, то пиши уже конкретные ошибки ну или сразу в Job.

anonymous
()
Ответ на: комментарий от anonymous

Можно подробнее, какой обработчик. План что ли написать, а я уже буду пытаться это в код превратить. Я только вчера познакомился с Lua. Логика у обработчика какая должна быть?

darksmoke
() автор топика
Ответ на: комментарий от darksmoke
            content_by_lua '
                ngx.req.read_body()
                local data = ngx.req.get_body_data()

                local cjson = require "cjson"
                local jsonValue = cjson.decode(data)


                if jsonValue["action"] == "a" then
                    ngx.status = ngx.HTTP_OK
                    ngx.header.content_type = "application/json; charset=utf-8"
                    ngx.print("{lll}")
                    return ngx.exit(ngx.OK)
                elseif jsonValue["action"] == "b" then
                    ngx.status = ngx.HTTP_OK
                    ngx.header.content_type = "application/json; charset=utf-8"
                    ngx.say(cjson.encode({ data = "Sample Data", ll = "rrr" }))
                    return ngx.exit(ngx.OK)
                end

            ';

Но проблема в том что у меня JSON начинается с цифры и все время ошибка из-за этого. Может есть другой метод?

darksmoke
() автор топика
Ответ на: комментарий от anonymous

РЕШЕНО

ngx.req.read_body()
local data = ngx.req.get_body_data()
            
local cjson = require "cjson"
local jsonValue = cjson.decode(data)

ngx.header.content_type = "application/json; charset=utf-8"
ngx.say(\'{"1_sign_level":"1100100"}\')

darksmoke
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.