【发布时间】:2014-12-01 16:44:04
【问题描述】:
在 Ruby 中,有没有办法在尝试解析字符串之前检查它是否是有效的 json?
例如从其他一些 url 获取一些信息,有时它返回 json,有时它可能返回一个无效响应的垃圾。
我的代码:
def get_parsed_response(response)
parsed_response = JSON.parse(response)
end
【问题讨论】:
-
我很确定解析它是确定它是否有效的唯一方法。为什么不解析它并处理告诉你它无效的解析错误?
-
例如这样
JSON.parse(string) rescue nil -
理论上应该是有办法的。解析字符串会产生比知道它是否可解析的适当更强的信息。在乔姆斯基的术语中,关于自然语言,这种区别对应于强与弱的生成能力。但是,像上面的 cmets 那样挽救错误有什么问题呢?
-
或者你可以使用Regex to validate JSON
-
从技术上讲,判断一个字符串在一种语言中是否有效的过程就是解析。构建一个告诉你如何它是有效的数据结构实际上只是一个副作用。