我正在使用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 characers并修复了错误。
现在我想了解我需要报告此错误的人。
答案 0 :(得分:0)
JSON和YAML文档应该根据HTTP头中给出的字符集进行解码,然后应该适当地解析生成的文档。 JSON和YAML do 都有一种在ASCII中表达非ASCII字符的方法,但是没有强制使用它们而不是使用完整编码。