我需要反序列化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;
}
}
问题:我的customserializer永远不会被调用。我通过调试点验证了这一点
我正在使用FasterXML Jackson
任何想法如何使用自定义反序列化器。
答案 0 :(得分:0)
你的情况下的反应应该像下面一样
response: [
speed: 40,
distance: 20,
time: 3
]
当您按照传递的方式传递JSON(在{}
中)时,它将被视为一个对象,而不是对象列表,在JSON中表示您需要在[]
中指定它们的列表括号