Playframework 2.0 Swagger Play Framework 2.2-Joda日期时间问题

Playframework 2.0 Swagger Play Framework 2.2-Joda日期时间问题,playframework-2.0,jodatime,swagger,Playframework 2.0,Jodatime,Swagger,我正试图在基于wordnik的swagger-play2的scala play2.2项目中使用swagger。似乎在处理Joda DateTime时有问题。使用wordnik示例播放项目,在“订单”案例类中 @ApiModel("Order") case class Order ( @(ApiModelProperty @field)(position=1)id: Long, @(ApiModelProperty @field)(position=2)petId: Long, @(A

我正试图在基于wordnik的swagger-play2的scala play2.2项目中使用swagger。似乎在处理Joda DateTime时有问题。使用wordnik示例播放项目,在“订单”案例类中

@ApiModel("Order")
case class Order (
  @(ApiModelProperty @field)(position=1)id: Long,
  @(ApiModelProperty @field)(position=2)petId: Long,
  @(ApiModelProperty @field)(position=3)quantity: Int,
  @(ApiModelProperty @field)(position=4)shipDate: DateTime,
  @(ApiModelProperty @field)(position=5)status: String
)
我将shipDate从java Date更改为Joda DateTime,当我调用/store/order API时,它会抛出一个错误:

[JsonMappingException: Class org.joda.time.tz.CachedDateTimeZone has no default constructor; 
can not instantiate default bean value to support 'properties=JsonSerialize.Inclusion.NON_DEFAULT' annotation 
(through reference chain: scala.collection.convert.SeqWrapper[0]->models.Order["shipDate"]->org.joda.time.DateTime["zone"])]
有什么想法吗


谢谢。

我也有类似的问题。换句话说,我确实得到了同样的例外。 因此,我将发布对我有效的解决方案

解决方案是在使用ScalaJsonUtil.mapper的地方调整BaseApiController.toJsonString(data:Option[Any])方法

替换

ScalaJsonUtil.mapper.writeValueAsString(d)

JsonInclude.Include.NON_为空,来自以下导入

import com.fasterxml.jackson.annotation.JsonInclude

或者,您可以使用这个库

该库采用与注释不同的方法(这迫使您学习新的API),您可以直接在路由文件中以注释的形式编写swagger规范。它会自动生成joda.datetime的定义

import com.fasterxml.jackson.annotation.JsonInclude