Что такое октет JSON и почему требуется два?
У меня есть входящие данные, которые хранятся в переменной messages
:
connection = ContextIO::Connection.new(key, secret)
messages = connection.all_messages(:account => account, :limit => 100, :since => (Time.now - 3000.day ))
Переменная messages
отформатирована в JSON. Затем я выполняю это:
foo = JSON.parse(messages)['data']
В большинстве случаев это работает. Время от времени я получаю это сообщение об ошибке:
A JSON text must at least contain two octets!
Это сообщение об ошибке затем ссылается на строку JSON.parse(messages)['data']
-
Что такое октет?
-
Почему текст JSON должен содержать не менее двух октетов?
-
Как предотвратить прерывание моего кода каждый раз, когда messages
не имеет двух октетов?
Спасибо!
Ответы
Ответ 1
- Октет - это группа из 8 бит. Сегодня октет является синонимом байта, но байт исторически упоминается о любой "нативной" группировке битов, и это может означать 4,6,7 или 8 бит.
- Текст JSON должен содержать не менее двух октетов, потому что структура верхнего уровня документа JSON является массивом или объектом, а кратчайшие -
[]
и {}
соответственно.
- Проверьте значение
messages
. Вероятно, он пуст, не задан или состоит из одной цифры (например, 4
), что недопустимо JSON, но принято многими реализациями JSON.
Ответ 2
Пока я полностью согласен с другим ответом, в моем случае у меня была допустимая строка JSON
, но при попытке JSON.parse
по-прежнему принималось сообщение об ошибке "JSON text должно содержать не менее двух октетов".
Моя проблема заключалась в том, что я не указывал тип содержимого application/json
. Как только я добавил, JSON.parse
работал без ошибок.
Надеюсь, это поможет кому-то еще.