我正在使用java和以下库构建API
我现在正在尝试使用对象列表作为参数创建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从网络应用发送数据。当我没有使用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中运行正常:发布用户对象,获取包含日期时间的数据,发回日期时间
修改
我发现joda-time有一个extension。我添加了以下代码
@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;
}
}
但它仍然给我相同的结果
答案 0 :(得分:0)
您的日期格式不是标准格式。 改变这个
"date":{
"chronology":{
},
"millis":1487322000000
}
到"date": 1487322000000
或字符串格式化日期(在这种情况下,您需要配置Genson来解析您的格式)。