相关疑难解决方法(0)

JSON文本必须至少包含两个八位字节

我收到了这个错误,我找不到任何合理的答案,所以我想我会写一个问题的摘要.

如果您在irb中运行此代码段:

JSON.parse( nil )
Run Code Online (Sandbox Code Playgroud)

您将看到以下错误:

TypeError: can't convert nil into String
Run Code Online (Sandbox Code Playgroud)

我有点期待函数返回nil,而不是TypeError.如果您使用转换所有输入to_s,那么您将看到八位字节错误:

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

那很好,很好.如果你不知道八位字节是什么,请阅读这篇文章以获得摘要和解决方案: 什么是JSON八位字节,为什么需要两个?

您传入的变量是一个空字符串.不要尝试在JSON.parse方法中使用空字符串.

所以,现在我知道错误的原因,我应该使用什么模式来处理这个问题?我有点厌恶修补JSON库以允许nil值.任何建议将不胜感激.

ruby json ruby-on-rails irb

63
推荐指数
1
解决办法
7万
查看次数

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

我有传入的数据,我存储在一个变量中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都没有打破两个八位字节?

谢谢!

variables json ruby-on-rails

37
推荐指数
2
解决办法
2万
查看次数

标签 统计

json ×2

ruby-on-rails ×2

irb ×1

ruby ×1

variables ×1