Jackson Parser:忽略类型不匹配的反序列化

vKa*_*yap 5 java android json cakephp jackson

我收到以下从服务器生成的响应 cakephp

 [
 {
  "id": "42389",
  "start": "0000-00-00",
  "end": "0000-00-00",
  "event_id": null,
  "trip_id": "5791",
  "location_id": "231552",
  "user_id": "105",
  "users_attending": "0",
  "user_local": "0",
  "Trip": {
   "name": "Asdas"
  },
  "Event": [],
  "Location": {
   "name": "South Melbourne"
  }
 },
 {
  "id": "42392",
  "start": "0000-00-00",
  "end": "0000-00-00",
  "event_id": "1218",
  "trip_id": "4772",
  "location_id": "271505",
  "user_id": "105",
  "users_attending": "3",
  "user_local": "50",
  "Trip": {
   "name": "trip by 1059200"
  },
  "Event": {
   "title": "SampleEvent 454",
   "id": "1218"
  },
  "Location": {
   "name": "Houston"
  }
 },
 .......
 ]
Run Code Online (Sandbox Code Playgroud)

问题是解析器需要Event对象,但如果它null接收空数组。

由于响应是由 自动生成的cakephp,因此必须在服务器端的很多地方进行更改。

Event如果属性为空数组,是否有任何简单的方法可以让 jackson 忽略属性?

编辑:

我试过有两个带有Event名称的属性:一个数组和另一个对象,但这也不起作用。

vKa*_*yap 2

因为,我必须为许多对象处理这样的响应,所以我最终继续创建一个通用类,它将返回Deserializer特定的class.

这是我用过的

public class Deserializer<T> {

  public JsonDeserializer<T> getDeserializer(final Class<T> cls) {
      return new JsonDeserializer<T> (){

         @Override
         public T deserialize(JsonParser jp, DeserializationContext arg1) throws IOException, JsonProcessingException {
            JsonNode node = jp.readValueAsTree();
            if (node.isObject()) {
              return new ObjectMapper().convertValue(node, cls);
            }
            return null;
         }
     };
}
Run Code Online (Sandbox Code Playgroud)

}