2013-08-27 2 views
0

Lorsque vous utilisez writer par défaut jackson, comme ci-dessous:la mise en œuvre manuellement sérialisation jackson ne tient pas compte des annotations

protected static String getAsJson(Class clazz, Object object) throws IOException { 
    ObjectWriter ow = objectMapper.writerWithType(clazz); 
    return ow.writeValueAsString(object); 

Les annotations telles que ci-dessous sont ignorés:

@JsonDeserialize(using = LocalDateDeserializer.class) 
@JsonSerialize(using = LocalDateSerializer.class) 
@Type(type = "org.jadira.usertype.dateandtime.joda.PersistentLocalDate") 
private LocalDate date; 

Comment puis-je mettre en œuvre manuellement la valeur par défaut sérialisation JACKSON est utilisé avec les ressorts @Responsebody (qui fonctionne bien avec les annotations)?

+1

Enregistrez-vous un De/Serializer personnalisé avec le Mapper comme mentionné ici. Http://wiki.fasterxml.com/JacksonHowToCustomSerializers –

+0

Oublié de demander: ignore comment? Qu'est-ce qui ne fonctionne pas? – StaxMan

+0

@StaxMan l'annotation jsonserialize, le lien ci-dessus l'a fixé pour moi, merci quand même – NimChimpsky

Répondre

1

Jackson ne reconnaît que les annotations qu'il connaît: et je devine que, dans votre exemple, @JsonSerialize et @JsonDeserialize sont des annotations Jackson (de Jackson package DataBind), mais @Type est quelque chose de différent (fourni par Spring MVC, peut-être). Cela signifie que quelque chose d'autre utiliserait cette annotation (Spring).

Il est possible d'étendre JacksonAnnotationIntrospector pour reconnaître d'autres types d'annotations, c'est donc quelque chose que vous pouvez faire. Il existe une méthode qui permet de rechercher des substitutions de type explicites que vous pouvez remplacer.

Questions connexes