Строка JSON не может быть преобразована в правильную таблицу Lua

Я выполняю запрос к стороннему API, используя luasec, lua-socket и преобразовываю данные, строку JSON, в таблицу lua с помощью cjson. Я прочитал документы по указанным модулям и, к сожалению, ни один из них не помог мне с моей проблемой. К сожалению, нельзя связать более 2 сайтов с текущим аккаунтом.

Резюме: Я получаю ответ и соответствующую строку, используя функцию отправленного запроса, при преобразовании указанной строки в таблицу lua с помощью cjson.decode выходная таблица не является желательной, это копия моего заголовка ответа, который не является преднамеренным,

Следующий код - это то, как я делаю мой запрос:

local function request (req_t)
  local res_t = {}

  resp = https.request {
    url = const.API_URL .. req_t.url,
    method = req_t.method,
    headers = req_t.headers,
    sink = ltn12.sink.table(res_t)
  }

  return table.concat(res_t), resp.headers, resp.code
end

Используя следующий вызов

local res, headers = request({ ... })

Я получаю правильный ответ в виде строки, но моя цель состоит в том, чтобы с ней манипулировать данными, поэтому превращаю указанный ответ (строку) в таблицу lua с помощью

local resJson = cjson.decode(res)

Не выдает правильный вывод. Это действительно производит таблицу, которая точно совпадает с моим заголовком ответа. Вот следующий вывод из моего терминала вместе с кодом

When out of function type is: string

Desired response in string:
{"total_photos":221926,"photo_downloads":"186029632.0"}

When out of function type is: string

Desired response in string:
{"total_photos":221926,"photo_downloads":"186029632.0"}


After decode, type is: table

server  Cowboy
strict-transport-security   max-age=31536000
access-control-allow-headers    *
x-ratelimit-limit   50
x-ratelimit-remaining   46
x-cache-hits    0, 0
accept-ranges   bytes
access-control-request-method   *
x-request-id    ee5a74fd-2b10-4f46-9c25-5cfc53aeac6c
access-control-expose-headers   Link,X-Total,X-Per-Page,X-RateLimit-Limit,X-RateLimit-Remaining
content-type    application/json
connection  close
content-length  55
fastly-debug-digest f62d52c08b1ef74db89a66a0069f0a35c49e52230567905240dacf08c9ea1813
vary    Origin
cache-control   no-cache, no-store, must-revalidate
x-timer S1496524765.369880,VS0,VE111
x-cache MISS, MISS
x-served-by cache-iad2123-IAD, cache-mad9429-MAD
via 1.1 vegur, 1.1 varnish, 1.1 varnish
date    Sat, 03 Jun 2017 21:19:25 GMT
age 0
access-control-allow-origin *
x-runtime   0.011667

Printing header

server  Cowboy
strict-transport-security   max-age=31536000
access-control-allow-headers    *
x-ratelimit-limit   50
x-ratelimit-remaining   46
x-cache-hits    0, 0
accept-ranges   bytes
access-control-request-method   *
x-request-id    ee5a74fd-2b10-4f46-9c25-5cfc53aeac6c
access-control-expose-headers   Link,X-Total,X-Per-Page,X-RateLimit-Limit,X-RateLimit-Remaining
content-type    application/json
connection  close
content-length  55
fastly-debug-digest f62d52c08b1ef74db89a66a0069f0a35c49e52230567905240dacf08c9ea1813
vary    Origin
cache-control   no-cache, no-store, must-revalidate
x-timer S1496524765.369880,VS0,VE111
x-cache MISS, MISS
x-served-by cache-iad2123-IAD, cache-mad9429-MAD
via 1.1 vegur, 1.1 varnish, 1.1 varnish
date    Sat, 03 Jun 2017 21:19:25 GMT
age 0
access-control-allow-origin *
x-runtime   0.011667

Функция, которая производит указанный журнал

local res, headers = request({ ... })

print('When out of function type is: ' ..type(res) .. '\n')
print('Desired response in string:')
print(res .. '\n')
resJson = cjson.decode(res)
print('\nAfter decode, type is: ' .. type(resJson) .. '\n')
pTable(resJson)
print('\nPrinting header\n')
pTable(headers)

pTable - это просто функция для вывода таблицы в стандартный вывод.

заранее спасибо

1 ответ

Выложенные функции и процедуры верны. Проблема была в моей функции таблицы печати, которую я каким-то образом жестко закодировал в своих заголовках.

Другие вопросы по тегам