什么是JSON八位字节,为什么需要两个?

我有传入的数据,我存储在一个可变的messages

 connection = ContextIO::Connection.new(key, secret) messages = connection.all_messages(:account => account, :limit => 100, :since => (Time.now - 3000.day )) 

variablesmessages格式化为JSON。 然后我执行这个:

  foo = JSON.parse(messages)['data'] 

大部分时间这个工作。 每隔一段时间,我收到这个错误消息:

  A JSON text must at least contain two octets! 

该错误消息然后引用行JSON.parse(messages)['data']

  1. 什么是八位字节?

  2. 为什么JSON文本至less包含两个八位字节?

  3. 每次messages没有两个八位字节时,如何防止破坏我的代码?

谢谢!

  1. 八位字节是一组8位。 今天,八位字节与字节是同义的,但字节在历史上被称为任何“本地”比特分组,并且可能意味着4,6,7或8比特。
  2. JSON文本必须包含至less两个八位字节,因为JSON文档的顶层结构是数组或对象,最短的表示forms分别是[]{}
  3. 检查值messages 。 它可能是空的,未设置或由一个数字(如4 ),这是不是有效的JSON,但被许多JSON实现接受。

虽然我完全同意其他答案,在我的情况下,我有一个有效的JSONstring,但仍然收到“JSON文本必须包含至less两个八位字节”错误信息时尝试JSON.parse

我的问题是,我没有指定application/json内容types。 一旦我添加, JSON.parse工作没有错误。

希望这可以帮助别人。