无法使用Play和Scala检查和处理空值

时间:2014-06-23 14:20:39

标签: json api scala playframework-2.0 automated-tests

我正在尝试使用Scala和Play框架构建API端点测试。

代码导致错误,因为我无法验证response.json是否为空。这个特定的端点不会返回任何内容,我需要检查这种情况。

  protected def apiResponse[T](response: Response)(implicit reads: Reads[T]): JsResult[T] = {
    response.status match {
      case Success(code)  => Json.fromJson[T](response.json)
      case ClientError(code) => throw ApiError(response.body, response.status)
      case _ =>  throw ApiError(response.statusText, response.status)
    }
  }

我正在尝试做这类事情。

protected def apiResponse[T](response: Response)(implicit reads: Reads[T]): JsResult[T] = {
    response.status match {
      case Success(code)  => if(Json.fromJson[T](response.json).equals(JsNull)) Json.fromJson[T](JsString(response.statusText.toString+"1")) else Json.fromJson[T](response.json)
      case ClientError(code) => throw ApiError(response.body, response.status)
      case _ =>  throw ApiError(response.statusText, response.status)
    }
  }

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:1)

我想出了如何完成这项工作。我意识到端点返回一个空的response.body。

if(response.body.toString ==“”)为我做了诀窍,而不是考虑整个response.json的值。

如果有人有更好的方法,请告诉我。