【问题标题】:How to print an api response which can be either JSON or non-JSON in rails?如何在rails中打印可以是JSON或非JSON的api响应?
【发布时间】:2019-04-12 13:09:06
【问题描述】:

我有一个输出 api 响应的方法。响应可以是 JSON 响应或非 JSON 响应。对于 JSON 响应,我的代码如下:

定义进程 如果成功? JSON.parse(response.body) 别的 处理失败 结尾 结尾

对于非 JSON 响应,我使用 'eval' 作为:

定义进程 如果成功? 评估(response.body) 别的 处理失败 结尾 结尾

但由于响应可以是任何东西,我如何确保它在两种情况下都打印响应?

谢谢

【问题讨论】:

    标签: ruby-on-rails json api response


    【解决方案1】:

    使用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
    

    【讨论】:

    • 非常感谢@mark。如此干净利落的技术!
    • 乐于助人:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-09
    相关资源
    最近更新 更多