Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala play json-don';t解析/反序列化为单参数case类_Json_Scala_Parsing_Play Json - Fatal编程技术网

Scala play json-don';t解析/反序列化为单参数case类

Scala play json-don';t解析/反序列化为单参数case类,json,scala,parsing,play-json,Json,Scala,Parsing,Play Json,在Scala中,我想解析使用Travis CI REST API检索的JSON响应。为此,我决定使用play json库。除此之外,根据REST API“模式”,我还定义了以下案例类: case class Build(id : Int, repository_id : Int, commit_id : Int, number : String, event_type : String,

在Scala中,我想解析使用Travis CI REST API检索的JSON响应。为此,我决定使用play json库。除此之外,根据REST API“模式”,我还定义了以下案例类:

case class Build(id : Int,
             repository_id : Int,
             commit_id : Int,
             number : String,
             event_type : String,
             pull_request : Boolean,
             pull_request_title : String,
             pull_request_number : String,
             state : String,
             started_at : String,
             finished_at : String,
             duration : Int,
             job_ids : List[Int]) extends Serializable{
}

case class Builds(builds : List[Build])
实现本身应该是自解释的,但是如果需要任何进一步的描述,我将更新这个问题

除此之外,我还为play json库定义了以下读取:

implicit val buildReads : Reads[Build] = (
      (JsPath \ "id").read[Int] and
      (JsPath \ "repository_id").read[Int] and
      (JsPath \ "commit_id").read[Int] and
      (JsPath \ "number").read[String] and
      (JsPath \ "event_type").read[String] and
      (JsPath \ "pull_request").read[Boolean] and
      (JsPath \ "pull_request_title").read[String] and
      (JsPath \ "pull_request_number").read[String] and
      (JsPath \ "state").read[String] and
      (JsPath \ "started_at").read[String] and
      (JsPath \ "finished_at").read[String] and
      (JsPath \ "duration").read[Int] and
      (JsPath \ "job_ids").read[List[Int]]
    )(Build.apply _)

implicit val buildsReads : Reads[Builds] = (__ \ "builds").read[List[Build]].map(Builds(_))
代码会编译,模式(即案例类)会确认REST API响应,但是,在验证响应时,会出现以下错误:

JsError(列表)(/builds(0)/pull_请求_标题,列表(ValidationError(列表(error.expected.jsstring),WrappedArray()),(/builds(0)/pull_请求_编号,列表(ValidationError(error.expected.jsstring),WrappedArray()),(/builds(1)/pull_请求_标题,列表(ValidationError.expected.jsstring,WrappedArray()),(/builds(1)/pull_请求编号,列表(ValidationError(List(error.expected.jsstring),WrappedArray()),(/builds(2)/pull_请求标题,列表(ValidationError(List(error.expected.jsstring),WrappedArray()),(/builds(2)/pull_请求编号,列表(ValidationError(List(error.expected.jsstring),WrappedArray())),(/builds(3)/pull_请求标题,列表(ValidationError)(List(error.expected.jsstring),WrappedArray()),(/builds(3)/pull_请求_编号,List(ValidationError(List(error.expected.jsstring),WrappedArray()),(/builds(4)/pull_请求_标题,List(ValidationError(List(error.expected.jsstring),WrappedArray()),(/builds(4)/pull_请求_编号,List(ValidationError.expected.jsstring),WrappedArray())))),(/builds(5)/pull_请求_title,List(ValidationError(List(error.expected.jsstring),WrappedArray()),(/builds(5)/pull_请求_number,List(ValidationError(error.expected.jsstring),WrappedArray()),(/builds(6)/pull_请求_number,List(ValidationError.expected.jsstring),WrappedArray()),(/builds(7)/pull_请求_title,List(ValidationError(List(error.expected.jsstring),WrappedArray()),(/builds(7)/pull_请求_编号,List(ValidationError(List(error.expected.jsstring),WrappedArray()),(/builds(8)/pull_请求_标题,List(ValidationError(List(error.expected.jsstring),WrappedArray()),(/builds(8)/pull_请求_编号,List(validationarror)(List(List)(ValidationError.jsstring))(error.expected.jsstring)、WrappedArray())、(/builds(9)/pull_请求_标题、List(10)/ValidationError(List(error.expected.jsstring)、WrappedArray())、(/builds(9)/pull_请求_编号、List(ValidationError(List(error.expected.jsstring)、WrappedArray()))、(/builds(10)/pull_请求_标题、List(ValidationError(List(error.expected.jsstring)、WrappedArray())),(/builds(10)/pull_请求编号,列表(ValidationError(List)(error.expected.jsstring),WrappedArray()),(/builds(11)/pull_请求编号,列表(ValidationError(List)(error.expected.jsstring),WrappedArray()),(/builds(12)/pull_请求标题,列表(ValidationError(List(error.expected.jsstring),WrappedArray()),(/builds(12)/pull_请求编号,列表(ValidationError(List(error.expected.jsstring),WrappedArray()),(/builds(13)/pull_请求_标题,List(ValidationError(List(error.expected.jsstring),WrappedArray()),(/builds(13)/pull_请求_编号,List(ValidationError(error.expected.jsstring),WrappedArray()),(/builds(14)/pull_请求_标题,List(ValidationError)(List(List))等等)(error.expected.jsstring),WrappedArray()),(/builds(14)/pull_请求_编号,List(15)/ValidationError(List(error.expected.jsstring),WrappedArray()),(/builds(15)/pull_请求_标题,List(ValidationError(List(error.expected.jsstring),WrappedArray()),(/builds(15)/pull_请求_编号,List(List(error.expected.jsstring),WrappedArray())),(/builds(16)/pull_请求编号,列表(ValidationError(List(error.expected.jsstring),WrappedArray()),(/builds(17)/pull_请求编号,列表(ValidationError(List(error.expected.jsstring),WrappedArray()),(/builds(18)/pull_请求标题,列表(ValidationError(List(error.expected.jsstring),WrappedArray()),(/builds(18)/pull_请求编号,列表(ValidationError(List(error.expected.jsstring),WrappedArray()),(/builds(19)/pull_请求_标题,List(ValidationError(List(error.expected.jsstring),WrappedArray()),(/builds(19)/pull_请求_编号,List(ValidationError(error.expected.jsstring),WrappedArray()),(/builds(20)/pull_请求_标题,List(ValidationError)(List(List)(ValidationError.jsstring)))(error.expected.jsstring),WrappedArray()),(/builds(20)/pull_请求_编号,List(22)/pull_请求_标题,List(ValidationError(List(error.expected.jsstring),WrappedArray()),(/builds(21)/pull_请求_编号,List(ValidationError.expected.jsstring),WrappedArray()),(/builds(22)/pull_请求_标题,List(ValidationError.expected.jsstring,WrappedArray())),(/builds(22)/pull_请求编号,列表(ValidationError(List)(error.expected.jsstring),WrappedArray()),(/builds(23)/pull_请求标题,列表(ValidationError(List)(error.expected.jsstring),WrappedArray()),(/builds(23)/pull_请求编号,列表(ValidationError(List(error.expected.jsstring),WrappedArray()),(/builds(24)/pull_请求标题,列表(ValidationError(List(error.expected.jsstring),WrappedArray()),(/builds(24)/pull_请求_编号,List(ValidationError(List(error.expected.jsstring),WrappedArray()))


关于问题可能是什么的任何线索?提前感谢!

使用play Json如果要序列化的case类没有使用任何自定义类型,您不需要手动编写读卡器或写卡器,则可以使用Json。Writes[t]:

implicit val buildFormat = Json.Reads[Build]

这将自动为您生成读取(您也可以使用Json.Writes[T]或Json.Format[T])。Play足够聪明,可以使用它来反序列化列表[T]另外。

使用play Json如果要序列化的case类没有使用任何自定义类型,您不需要手工编写读卡器或写卡器,则可以使用Json。Writes[t]:

implicit val buildFormat = Json.Reads[Build]
这将自动为您生成读取