【发布时间】:2011-04-16 21:45:57
【问题描述】:
我正在使用 Rubyoverflow gem,它允许从 Ruby 代码使用 Stackoverflow API。而且我注意到有时我会收到错误消息:
Invalid JSON string
我尝试分析代码,发现当 Stackoverflow 的答案包含非 ascii 字符时发生错误。
Rubyoverflow 使用 HTTParty gem,HTTParty gem 使用 Crack gem 解析 JSON 文件。
module Crack
class JSON
def self.parse(json)
json = json.delete!("^\u{0000}-\u{007F}") # here is my fix
YAML.load(unescape(convert_json_to_yaml(json)))
rescue ArgumentError => e
raise ParseError, "Invalid JSON string"
end
我添加了一行代码来从 JSON 中删除所有非 ascii 字符,并且错误已修复。
现在我想了解我需要报告此错误的人是谁。
- 是否可以在 JSON 文档中包含非 ascii 字符?
- 是否可以在 YAML 文档中包含非 ascii 字符?
- 如果标准允许在 JSON 和 YAML 中包含非 ascii 字符 -> YAML 类中的错误。这样对吗?这门课的作者是谁?修复此错误的最佳方法是什么?
【问题讨论】:
-
快速搜索显示the author can be reached at github。如果它确实是一个错误,那么您将在那里提交错误报告。我不这么认为,但我认为问题在于您不了解规范或如何处理 Unicode。我希望看到修改后的问题,因为“我想了解谁是我需要报告此错误的人”此时对于 SO 来说并不是一个好问题。
-
本例中没有我的代码。 Stackoverflow 发布 JSON,Rubyoverflow 使用此 JSON,HTTParty 获取此 JSON,Crack 将 JSON 转换为 YAML,YAML-lib 加载此 YAML。问题是他们当中谁是错误的原因。为什么你在 Rubyoverflow 中决定了这个原因?您确定 Stackoverflow 提供正确的 JSON 吗?您确定所有其他 gem 和库都可以正常工作吗?
-
@the Tin Man:确保链接到正确的 github 项目;)。这是原始项目的一个分支,没有额外的提交
-
@phsr,好吧,因为你没有链接到正确的...phsr's Rubyoverflow :-)