0

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

  • javax.ws.rs-api-2.0.1
  • genson-1.4
  • 乔达时间 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 应用程序发送的。当我不发送带有日期时间对象的嵌套列表时,它工作正常。当我尝试发送它时,我收到错误:

java.lang.InstantiationException

发送的json看起来像这样

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

和这个链接的java类datevalue

public class Value {
    private DateTime date;
    private Float value;
}

发送时代码如何不起作用DateTime

注意:API 中的其他一切工作正常:发布用户对象、获取包含日期时间的数据、发回日期时间

编辑

我发现 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;
    }
}

但它仍然给我同样的结果

4

1 回答 1

0

您的日期格式不标准。改变这个

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

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

于 2017-05-12T17:57:25.537 回答