What is a JSON octet and why are two required?
json, ruby-on-rails, variables
Solution
- An octet is a group of 8 bits. Today, octet is synonymous with byte, but byte historically referred to any "native" grouping of bits, and that could mean 4,6,7, or 8 bits.
- JSON text must contain at least two octets because the top-level structure of a JSON document is an array or object, and the shortest representations of those are `[]` and `{}`, respectively.
- Check the value `messages`. It is probably empty, unset or consists of a single digit (like `4`), which is not valid JSON, but accepted by many JSON implementations.
Problem
I have incoming data, which I store in a variable `messages`: ``` connection = ContextIO::Connection.new(key, secret) messages = connection.all_messages(:account => account, :limit => 100, :since => (Time.now - 3000.day )) ``` The variable `messages` is formatted in JSON. Then I execute this: ``` foo = JSON.parse(messages)['data'] ``` Most of the time this works. Every now and again, I get this error message: ``` A JSON text must at least contain two octets! ``` That error message then refers to the line `JSON.parse(messages)['data']` What is an octet? Why must JSON text contain at least two octets? How do I prevent my code from breaking every time `messages` does not have two octets? Thanks!