我正在使用 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类date
和value
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;
}
}
但它仍然给我同样的结果