Java 反序列化对多个对象的JSON响应

Java 反序列化对多个对象的JSON响应,java,json,parsing,jackson,fasterxml,Java,Json,Parsing,Jackson,Fasterxml,我需要反序列化Json响应 response: { speed: 40, distance: 20, time: 3 } 分为3个不同的对象,即 Class Speed implements Base{ int speed; } Class Distance implements Base{ int distance; } Class Time implements Base{ int time; } 这就是我到目前为止所做的 @jsondeserialize(usin

我需要反序列化Json响应

response: {
 speed: 40,
 distance: 20,
 time: 3
}
分为3个不同的对象,即

Class Speed implements Base{
  int speed;
}

Class Distance implements Base{
  int distance;
}

Class Time implements Base{
  int time;
}
这就是我到目前为止所做的

@jsondeserialize(using = customdeserializer.class)
Class Response implements Base{
  ...
}

Class customdeserializer extends JsonDeserializer<List<Base>> {

@Override
public List<Base> deserialize(...) {
 //read Jsonparser
 // construct objects for Speed, Time and Distance
  //return 
}
}

Class Context {

public List<Base> converter(..) {
   ObjectMappper mapper = new ObjectMapper()
   List<Base> params = objectMapper.readValue(jsonValue, new TypeReference<List<Response>>() { }); 
   return params;

}

}
@jsondeserialize(使用=customdeserializer.class)
类响应实现基类{
...
}
类customdeserializer扩展JsonDeserializer{
@凌驾
公共列表反序列化(…){
//读取Jsonparser
//为速度、时间和距离构建对象
//返回
}
}
类上下文{
公共列表转换器(…){
ObjectMappper映射器=新的ObjectMapper()
List params=objectMapper.readValue(jsonValue,new TypeReference(){});
返回参数;
}
}
问题:我的customserializer从未被调用。我通过调试点验证了这一点

我正在使用FasterXML


您知道如何使用自定义反序列化程序来实现这一点吗

对你的情况的反应应该是

response: [
 speed: 40,
 distance: 20,
 time: 3
]

当您以您传递的方式传递JSON(在
{}
中)时,它将被视为一个对象,而不是对象列表,在JSON中表示您需要在
[]
括号中指定它们的列表。不幸的是,我无法修改响应。它来自第三方服务。我认为你需要改变你的实现,就像一个类与你所有的3个对象都有关系一样。是的,这是我最后的选择