裂缝中的错误?

时间:2011-04-16 21:45:57

标签: ruby json yaml

我正在使用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并修复了错误。

现在我想了解我需要报告此错误的人。

  1. 是否可以在JSON文档中包含非ascii字符?
  2. 是否可以在YAML文档中包含非ascii字符?
  3. 如果标准允许将非ascii字符包含在JSON和YAML中 - > YAML类中的错误。这样对吗?谁是这个类的作者,哪个是解决这个bug的最佳方法?

1 个答案:

答案 0 :(得分:0)

JSON和YAML文档应该根据HTTP头中给出的字符集进行解码,然后应该适当地解析生成的文档。 JSON和YAML do 都有一种在ASCII中表达非ASCII字符的方法,但是没有强制使用它们而不是使用完整编码。