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

Mor*_*ker 37 variables json ruby-on-rails

我有传入的数据,我存储在一个变量中messages:

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

变量messages以JSON格式化.然后我执行这个:

 foo = JSON.parse(messages)['data']
Run Code Online (Sandbox Code Playgroud)

大多数时候这是有效的.我一次又一次地收到此错误消息:

  A JSON text must at least contain two octets!  
Run Code Online (Sandbox Code Playgroud)

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

  1. 什么是八位字节?

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

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

谢谢!

phi*_*hag 49

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


Ste*_*ore 6

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

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

希望这有助于其他人.

  • 斯蒂芬,这正是我所需要的!你在哪里添加了"application/json"这一行? (3认同)