将JSON响应反序列化为多个对象

时间:2014-04-25 22:39:02

标签: 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(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

任何想法如何使用自定义反序列化器。

1 个答案:

答案 0 :(得分:0)

你的情况下的反应应该像下面一样

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

当您按照传递的方式传递JSON(在{}中)时,它将被视为一个对象,而不是对象列表,在JSON中表示您需要在[]中指定它们的列表括号