Comment configurer JacksonJaxbJsonProvider en une seule ligne de code?
- Je utiliser Jackson pour la sérialisation JSON dans une application comme ceci:
import javax.ws.rs.core.Application;
import org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider;
import org.codehaus.jackson.map.SerializationConfig;
public class MyApplication extends Application {
public Set<Class<?>> getClasses() {
Set<Class<?>> classes = new HashSet<Class<?>>();
classes.add(MyResource1.class);
classes.add(MyResource2.class);
...
return classes;
}
public Set<Object> getSingletons() {
Set<Object> singletons = new HashSet<Object>();
singletons.add(new JacksonJaxbJsonProvider().configure(
SerializationConfig.Feature.WRITE_NULL_PROPERTIES, false)); //(*)
return singletons;
}
}
(*) Nécessaire, sinon les champs annotés avec @XmlElementRef apparaît en sortie JSON comme "myField": null
lorsque la valeur null (au lieu de n'apparaissant pas), alors que c'est bien pour les champs annotés avec @XmlElement.
Cependant, l'utilisation de SerializationConfig.Feature.WRITE_NULL_PROPERTIES
est dépréciée en faveur de SerializationConfig.setSerializationInclusion(..)
(1)
qui lui-même est dépréciée en faveur de SerializationConfig.withSerializationInclusion(..)
ou configurer via ObjectMapper (2)
Mais ce que je pense est fait à l'aide de new JacksonJaxbJsonProvider().configure(..)
est en effet la configuration d'un ObjectMapper (j'ai pris un coup d'oeil au code).
Donc ma question est: comment dois-je configurer correctement, sans aide d'aucune obsolète propriété et sans (re)créer de nouvelles config classe(s)?
OriginalL'auteur maxxyme | 2013-02-05
Vous devez vous connecter pour publier un commentaire.
- Je utiliser la prochaine config et l'OM:
Espère aider
UPD:
Désolé, j'ai oublié la partie suivante. Aussi, vous devez l'enregistrer, comme:
Vous pouvez les combiner dans une seule classe, comme pour moi — je utiliser POJO la cartographie et l'analyse directe, donc pour moi son meilleur.
ContextResolver
?J'utilise le Printemps, cette ContextResolver devrait être d'un peu moins de contact(numérisés). Cette ContextResolver inscrire(et de les remplacer par défaut) ObjectMapper
Vous avez oublié de dire que la classe devrait avoir un Printemps annotation (j'ai choisi
@Component
) pour être auto-enregistrée par le Printemps. Merci btw.merci pour votre commentaire @maxxyme , mais l'annotation @ Fournisseur est assez.
OriginalL'auteur iMysak