【问题标题】:What is a JSON octet and why are two required?什么是 JSON 八位组,为什么需要两个?
【发布时间】:2011-11-04 06:13:53
【问题描述】:

我有传入的数据,我将其存储在变量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 没有两个八位字节时,如何防止我的代码中断?

谢谢!

【问题讨论】:

    标签: ruby-on-rails json variables


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

    【讨论】:

      【解决方案2】:

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

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

      希望这对其他人有所帮助。

      【讨论】:

      • 斯蒂芬,这正是我需要的!你在哪里添加了“application/json”这一行?
      猜你喜欢
      • 1970-01-01
      • 2020-01-25
      • 1970-01-01
      • 2011-01-15
      • 2010-12-08
      • 1970-01-01
      • 2010-11-17
      • 1970-01-01
      • 2020-06-26
      相关资源
      最近更新 更多