我正在使用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
}
]
}
]
}
]
和链接到此date
和value
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以解析您的格式(。