Ruby 裂缝中的虫子?
我正在使用Rubyoverflow gem,它允许使用Ruby代码中的Stackoverflow API。我注意到有时我会收到错误信息:Ruby 裂缝中的虫子?,ruby,json,yaml,Ruby,Json,Yaml,我正在使用Rubyoverflow gem,它允许使用Ruby代码中的Stackoverflow API。我注意到有时我会收到错误信息: Invalid JSON string 我试着分析代码,发现当Stackoverflow的答案包含非ascii字符时发生了错误 Rubyoverflow使用HttpParty gem,HttpParty gem使用Crack gem解析JSON文件 module Crack class JSON def self.parse(json)
Invalid JSON string
我试着分析代码,发现当Stackoverflow的答案包含非ascii字符时发生了错误
Rubyoverflow使用HttpParty gem,HttpParty 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类中的错误。是这样吗?谁是这个类的作者,修复这个bug的最佳方法是什么?
JSON和YAML文档应该根据HTTP头中给出的字符集进行解码,然后对生成的文档进行适当的解析。JSON和YAML都有一种用ASCII表示非ASCII字符的方法,但它们都不要求使用完整编码。快速搜索显示。如果它真的是一个bug,你会在那里提交bug报告。我不认为是这样,但我认为问题在于你不理解规范,或者不知道如何处理Unicode。我希望修改这个问题,因为我想知道我需要报告这个错误的人是谁,这不是一个很好的问题,所以在这一点上。在这个例子中没有我的代码。Stackoverflow发布JSON,Rubyoverflow使用此JSON,HTTParty获取此JSON,Crack将JSON转换为YAML,YAML lib加载此YAML。问题是谁是错误的原因。你为什么在Rubyoverflow中确定原因?您确定Stackoverflow提供了正确的JSON吗?你确定所有其他gem和库都正常工作吗?@铁皮人:确保链接到正确的github项目;。这是原始项目的一个分支,没有额外的commits@phsr,嗯,既然你没有链接到正确的…:-