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

时间:2011-08-26 05:59:19

标签: ruby-on-rails json variables

我有传入数据,我将其存储在变量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']

  1. 什么是八位字节?

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

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

  4. 谢谢!

2 个答案:

答案 0 :(得分:48)

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

答案 1 :(得分:6)

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

我的问题是我没有指定application/json的内容类型。一旦我添加了它,JSON.parse正常工作。

希望这有助于其他人。