IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Format d'échange (XML, JSON...) Java Discussion :

[TU][JUnit] Parser un json avec Jackson2 et Jax-rs


Sujet :

Format d'échange (XML, JSON...) Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juin 2008
    Messages : 22
    Points : 24
    Points
    24
    Par défaut [TU][JUnit] Parser un json avec Jackson2 et Jax-rs
    Bonjour à tous !

    J'ai une application Spring Boot Jersey qui fonctionne très bien en l'état. Je suis actuellement en train de produire une série de Test Unitaire avec JUnit.
    Problème : lorsque j'essaye de parser des chaînes json avec Jackson (ObjectMapper) sur une classe annotée Jax-rs, j'ai la très classique erreur suivante :
    com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "result" (class xxx), not marked as ignorable (one known property: "yyy"])
    at [Source: {...
    Que manque donc-t-il à mon TU pour que mon code fonctionne là aussi ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    public class JacksonContextProvider {
     
        private final static ObjectMapper mapper = new ObjectMapper();
     
        public JacksonContextProvider() {
            mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL)
                    .setSerializationInclusion(JsonInclude.Include.NON_DEFAULT)
                    .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
                    .enable(SerializationFeature.INDENT_OUTPUT)
                    .enable(SerializationFeature.WRITE_ENUMS_USING_TO_STRING)
                    .enable(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT)
                    .registerModule(new JaxbAnnotationModule());
        }
     
        public static ObjectMapper getMapper() {
            if(mapper == null) {
                new JacksonContextProvider();
            }
            return mapper;
        }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public class TestUnitaire {
     
        @Test
        public void tes() throws IOException {
     
            String jsonObject = "...";
            MyObject myObject = JacksonContextProvider.getMapper().readValue(jsonObject, MyObject.class);
            assertNotNull(myObject);
        }
    }
    Merci par avance !

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juin 2008
    Messages : 22
    Points : 24
    Points
    24
    Par défaut
    Problème résolu,

    Sans trop comprendre pourquoi, le fait de passer par une instance statique de mon JacksonContextProvider fait que çà marche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    public class JacksonContextProvider extends JacksonJaxbJsonProvider implements ContextResolver<ObjectMapper> {
     
        private static JacksonContextProvider instance;
     
        private static ObjectMapper mapper = new ObjectMapper();
     
        public JacksonContextProvider() {
            super(mapper, DEFAULT_ANNOTATIONS);
            mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL)
                    .setSerializationInclusion(JsonInclude.Include.NON_DEFAULT)
                    .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
                    .enable(SerializationFeature.INDENT_OUTPUT)
                    .enable(SerializationFeature.WRITE_ENUMS_USING_TO_STRING)
                    .enable(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT)
                    .registerModule(new JaxbAnnotationModule());
            instance = this;
        }
     
        public static ObjectMapper getMapper() {
            if(instance == null || mapper == null) {
                new JacksonContextProvider();
            }
            return instance.getContext(null);
        }
     
        @Override
        public ObjectMapper getContext(Class<?> type) {
            return mapper;
        }
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [2012] Parser du JSon (Avec Sql server 2012)
    Par Donpi dans le forum Développement
    Réponses: 1
    Dernier message: 02/05/2016, 13h57
  2. Parser du JSON avec QJsonObject
    Par Socomfr dans le forum Qt
    Réponses: 2
    Dernier message: 15/05/2013, 11h13
  3. Parser le json avec la resultat de ma recherche
    Par moezBH dans le forum Services Web
    Réponses: 2
    Dernier message: 26/09/2011, 16h16
  4. Parser un JSON avec des variables avec des "-" et des ":"
    Par Quentin33 dans le forum Windows Phone
    Réponses: 2
    Dernier message: 22/05/2011, 01h04
  5. Parser JSON avec $.getJSON jquery adaptation code
    Par MatthieuFourcade dans le forum jQuery
    Réponses: 2
    Dernier message: 22/06/2009, 10h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo