杰克逊:Pojo属性multitype

时间:2014-05-12 15:08:44

标签: java jackson pojo json-deserialization spring-android

我使用 Jackson 库进行序列化/反序列化。

我有一个Pojo类,其中包含一个我希望成为Array的属性,并且还支持object(如果可能,通过注释,例如: @Support( Actualite))在同一时间。

@JsonProperty @Support(Actualite)
    private ArrayList<Actualite> actualites;

有办法做到这一点吗?

1 个答案:

答案 0 :(得分:0)

我认为你所要求的是杰克逊支持一个属性作为一个数组,并且只有一个值的对象,例如

{ people : { name : "sam" } }

{ people : [ { name : "sam" }, { name : "bob" } ] }

在这种情况下,您需要将其添加到映射器中:

  mapper.configure(SerializationFeature.WRITE_SINGLE_ELEM_ARRAYS_UNWRAPPED, true);
  mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);

编辑春天

如果你在Spring for Android中使用RestTemplate,你应该可以做这样的事情:

// use false to turn off the default converts
RestTemplate restTemplate = new RestTemplate(false);

// create a new converter with the required features
MappingJacksonHttpMessageConverter converter = new MappingJacksonHttpMessageConverter();
ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationFeature.WRITE_SINGLE_ELEM_ARRAYS_UNWRAPPED, true);
mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
converter.setObjectMapper(mapper);

// register that as your converter
restTemplate.getMessageConverters().add(converter);