Подтвердить что ты не робот

Проверка правильности строки json перед попыткой ее проанализировать?

В Ruby существует ли способ проверить правильность строки json, прежде чем пытаться ее проанализировать?

Например, получение некоторой информации из некоторых других URL-адресов, иногда она возвращает json, иногда она может возвращать мусор, который не является допустимым ответом.

Мой код:

def get_parsed_response(response)
  parsed_response = JSON.parse(response)
end
4b9b3361

Ответ 1

Вы можете создать метод для проверки:

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

Ответ 2

Вы можете разобрать его таким образом

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

Ответ 3

Я думаю, что parse_json должен вернуть nil если он недействителен и не должен выдавать ошибку.

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

unless json = parse_json string
  parse_a_different_way
end