Подтвердить что ты не робот

Что такое октет 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 не имеет двух октетов?

Спасибо!

4b9b3361

Ответ 1

  • Октет - это группа из 8 бит. Сегодня октет является синонимом байта, но байт исторически упоминается о любой "нативной" группировке битов, и это может означать 4,6,7 или 8 бит.
  • Текст JSON должен содержать не менее двух октетов, потому что структура верхнего уровня документа JSON является массивом или объектом, а кратчайшие - [] и {} соответственно.
  • Проверьте значение messages. Вероятно, он пуст, не задан или состоит из одной цифры (например, 4), что недопустимо JSON, но принято многими реализациями JSON.

Ответ 2

Пока я полностью согласен с другим ответом, в моем случае у меня была допустимая строка JSON, но при попытке JSON.parse по-прежнему принималось сообщение об ошибке "JSON text должно содержать не менее двух октетов".

Моя проблема заключалась в том, что я не указывал тип содержимого application/json. Как только я добавил, JSON.parse работал без ошибок.

Надеюсь, это поможет кому-то еще.