У меня проблема, я не могу понять. Я послав короткое JSon данные в виде строки с помощью Redis (в виде очереди) и приемник бросает следующее сообщение об ошибке:Ошибка Json: «конец за пределами границ»?
[ERROR JSON (in queue)] - {"ip": null, "domain": "somedomain.com", "name": "Some user name", "contact_id": 12345, "signature":
"6f496a4eaba2c1ea4e371ea2c4951ad92f41ddf45ff4949ffa761b0648a22e38"} => end is out of bounds
Код, который бросает исключение является следующее:
try:
item = json.loads(item[1])
except ValueError as e:
sys.stderr.write("[ERROR JSON (in queue)] - {1} => {0}\n".format(str(e), str(item)))
return None
Что действительно странно, что если я открываю консоль питона и выполните следующие действия:
>>> import json
>>> s = '{"ip": null, "domain": "somedomain.com", "name": "Some user name", "contact_id": 12345, "signature": "6f496a4eaba2c1ea4e371ea2c4951ad92f41ddf45ff4949ffa761b0648a22e38"}'
>>> print s
у меня нет вопроса, строки (копировать/вставить в консоли Python) не дают никаких ошибок на всех, но мой оригинальный код беспересадочный крыло один!
У вас есть идеи о том, что вызывает проблему?
Но что действительно странно, что эта проблема возникает лишь несколько раз , 'item' - это кортеж, содержащий ключ от Redis в 0 и значение (данные json) в 1. Иногда значение json находится в полном элементе, я не знаю почему. –
Это не часть вашего вопроса. Вы должны задать новый вопрос, почему Redis возвращает строку вместо кортежа. – Daniel
Да, вы правы, и ваш ответ правильный для моего вопроса здесь, поэтому я принял его и поддержал синицу. –