Как напечатать ответ API, который может быть или JSON или не-JSON в рельсах? - PullRequest
0 голосов
/ 12 апреля 2019

У меня есть метод, который выводит ответ API.Ответом может быть либо ответ JSON, либо ответ не в формате JSON.Для ответа JSON мой код выглядит следующим образом:


def process
  if success?
    JSON.parse(response.body)
  else
    handle_failure
  end
end

А для ответа не в формате JSON я использовал 'eval' как:


def process
  if success?
    eval(response.body)
  else
    handle_failure
  end
end

Но так как ответ может быть любым, какя могу убедиться, что он печатает ответ в обоих случаях?

Спасибо

1 Ответ

1 голос
/ 12 апреля 2019

Использование метода из Проверка допустимости строки json перед попыткой ее проанализировать? , определить метод для проверки, является ли тело JSON или нет:

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

В вашем классе выше вы можете сделать:

def process
  valid_json?(response.body) ? process_json : process_non_json
end

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

def process_json
  if success?
    JSON.parse(response.body)
  else
    handle_failure
  end
end

def process_non_json
  if success?
    eval(response.body)
  else
    handle_failure
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...