【发布时间】:2019-04-12 13:09:06
【问题描述】:
我有一个输出 api 响应的方法。响应可以是 JSON 响应或非 JSON 响应。对于 JSON 响应,我的代码如下:
对于非 JSON 响应,我使用 'eval' 作为:
定义进程 如果成功? 评估(response.body) 别的 处理失败 结尾 结尾但由于响应可以是任何东西,我如何确保它在两种情况下都打印响应?
谢谢
【问题讨论】:
标签: ruby-on-rails json api response
我有一个输出 api 响应的方法。响应可以是 JSON 响应或非 JSON 响应。对于 JSON 响应,我的代码如下:
对于非 JSON 响应,我使用 'eval' 作为:
定义进程 如果成功? 评估(response.body) 别的 处理失败 结尾 结尾但由于响应可以是任何东西,我如何确保它在两种情况下都打印响应?
谢谢
【问题讨论】:
标签: ruby-on-rails json api response
使用Checking if a string is valid json before trying to parse it?中的方法,定义一个方法来检查正文是否为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
【讨论】: