JAX-RS joda datetime from json



我正在使用Java和以下库构建API

  • javax.ws.rs-api 2.0.1
  • Genson-1.4
  • Joda Time-2.9.6

我现在正在尝试创建一个post请求,其中一个对象列表作为参数

@Path("service")
public class ServiceResource {
    @Path("/stations/flow/forecasts")
    @POST
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public List<Station> getStations(List<Station> stations) {
            //Code
    }
}

此类Station包含一个具有DateTime变量的另一个类的列表。

使用JavaScript从Web应用发送数据。当我不使用DateTime对象发送嵌套列表时,它的工作正常。当我尝试发送它时,我会收到错误:

java.lang.instantiationException

JSON发送的看起来像

[
   {
      "code":"1048",
      "measures":[
         {
            "code":"10481002",
            "observations":[
               {
                  "date":{
                     "chronology":{
                     },
                     "millis":1487322000000
                  },
                  "value":1.702
               }
            ]
         }
      ]
   }
]

和链接到此datevalue

的Java类
public class Value {
    private DateTime date;
    private Float value;
}

发送DateTime时代码如何无法工作?

注意:其他所有内容在API中正常工作:张贴用户对象,获取包含DateTime的数据,发送回DateTime

编辑

我发现Joda Time有一个扩展。我添加了以下代码

@Provider
public class GensonProvider implements ContextResolver<Genson> {
    private final Genson genson = new GensonBuilder().useConstructorWithArguments(true).useDateAsTimestamp(false).withBundle(new JodaTimeBundle()).create();
    @Override
    public Genson getContext(Class<?> type) {
        return genson;
    }
}

,但它仍然给我相同的结果

您的日期格式不是标准的。更改此

"date":{
  "chronology":{
  },
  "millis":1487322000000
}

to "date": 1487322000000或到字符串格式的日期(在这种情况下,您需要配置Genson以解析您的格式(。

最新更新