ruby 在尝试解析字符串之前检查它是否是有效的json?

mwg9r5ms  于 2022-11-04  发布在  Ruby
关注(0)|答案(4)|浏览(159)

在Ruby中,有没有一种方法可以在尝试解析字符串之前检查它是否是有效的json?
例如,从其他URL获取一些信息,有时它返回json,有时它可能返回一个垃圾,这不是一个有效的响应。
我的代码:

def get_parsed_response(response)
  parsed_response = JSON.parse(response)
end
368yc8dk

368yc8dk1#

您可以创建一个方法来执行检查:

def valid_json?(json)
  JSON.parse(json)
  true
rescue JSON::ParserError, TypeError => e
  false
end
ncgqoxb0

ncgqoxb02#

您可以这样解析它

begin
  JSON.parse(string)  
rescue JSON::ParserError => e  
  # do smth
end 

# or for method get_parsed_response

def get_parsed_response(response)
  parsed_response = JSON.parse(response)
rescue JSON::ParserError => e  
  # do smth
end
4bbkushb

4bbkushb3#

我认为parse_json应该返回nil,如果它是无效的,并且不应该出错。

def parse_json string
  JSON.parse(string) rescue nil
end

unless json = parse_json string
  parse_a_different_way
end
neskvpey

neskvpey4#

让我建议一个更短的变体

def valid_json?(string)
  !!(JSON.parse(string)) rescue false
end

> valid_json?("test")
=> false

> valid_json?("{\"mail_id\": \"999129237\", \"public_id\": \"166118134802\"}")
=> true

相关问题