2016-10-06 6 views
1

J'utilise la bibliothèque https://immutables.github.io/ avec Jackson. Je veux que ma classe soit sérialisable par Jackson. Je voudrais utiliser la coutume PropertyNamingStrategy (configurée pour com.fasterxml.jackson.databind.ObjectMapper en utilisant mapper.setPropertyNamingStrategy(PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES);Comment utiliser la bibliothèque Jackson PropertyNamingStrategy avec Immutables

Malheureusement bibliothèque Immutables met @JsonProperty("propertyName") à tous les domaines dans le code généré. Cela remplace PropertyNamingStrategy défini au niveau du mappeur (ou au niveau de la classe, en utilisant l'annotation @com.fasterxml.jackson.databind.annotation.JsonNaming).

Est-il possible de faire arrêter la bibliothèque Immutables Nommage de propriété pour tous les domaines (en utilisant org.immutables.value.Value.Style ou des moyens similaires)?

Je suis venu avec solution de contournement, mettre @JsonProperty (sans valeur) à chaque propriété, mais je ne suis pas satisfait ceci

Répondre

1

La propriété de style forceJacksonPropertyNames=false ne force pas les noms de propriété à des chaînes spécifiques. Il fonctionne avec les stratégies de nommage configurées au niveau de la classe et au niveau du mappeur.

Introduction aux styles est disponible ici: http://immutables.github.io/style.html

Vous pouvez lire des informations générales sur ce paramètre dans les questions: https://github.com/immutables/immutables/issues/431https://github.com/immutables/immutables/issues/353

+0

Merci! forceJacksonPropertyNames = false a en effet le résultat que la classe Immutable * générée a des annotations JsonProperty sans nom. Cela amène Jackson à respecter la stratégie de nommage de mon com.fasterxml.jackson.databind.ObjectWriter, ou la stratégie de nommage définie par @JsonNaming au niveau de la classe. Ce serait génial d'avoir forceJacksonPropertyNames documenté sur la page http://immutables.github.io/style.html. Actuellement, il n'est pas mentionné sur cette page, et le fichier org.immutables.value.Value.Style entier n'est pas documenté dans javadoc. –

+0

Il est difficile de synchroniser la page de documentation et Javadoc, ils ont donc des rôles différents: la page sert d'introduction aux styles, où Javadoc est une référence détaillée (autant qu'elle essaie). Désolé si c'est moins transparent que cela devrait être, nous allons essayer d'améliorer cela! Je vous remercie! –