2017-10-05 5 views
1

J'essaie d'obtenir la classe optionnelle avec le client de Jersey. Lorsque le serveur distant renvoie Optional.empty(), j'obtiens cette erreur.Comment obtenir la classe facultative avec le client de maillot

Caused by: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "present" (class java.util.Optional), not marked as ignorable 

Mon code

ObjectMapper mapper = new ObjectMapper(); 
mapper.registerModule(new Jdk8Module()); 

Client client = ClientBuilder.newClient().register(new JacksonJsonProvider(mapper)); 
Optional<MyType> myType = client.target(TARGET_URL) 
        .path(PATH) 
        .request() 
        .get(Optional.class); 

Mes dépendances liées sont

<dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-databind</artifactId> 
    <version>2.9.1</version> 
</dependency> 

<dependency> 
    <groupId>com.fasterxml.jackson.datatype</groupId> 
    <artifactId>jackson-datatype-jsr310</artifactId> 
    <version>2.9.1</version> 
</dependency> 

<dependency> 
    <groupId>com.fasterxml.jackson.datatype</groupId> 
    <artifactId>jackson-datatype-jdk8</artifactId> 
    <version>2.9.1</version> 
</dependency> 

EDIT

L'application qui fonctionne sur le serveur distant est une application de démarrage de printemps. J'ai ajouté jackson-datatype-jdk8 dépendance sur l'application. Après cela, le exception de champ non reconnu résolu mais l'objet de retour est null. Avant cela, le postier a été renvoyé le résultat suivant

{ 
    "present": false 
} 

Mais maintenant

null 
+1

cela? https://github.com/FasterXML/jackson-modules-java8 – Eugene

+1

@Eugene Malheureusement, cela n'a pas fonctionné – Rhododendron

Répondre

0

Vous pouvez utiliser le @JsonInclude(Include.NON_EMPTY) pour annoter un tel dépôt.

valeur qui indique que seules les propriétés qui ont des valeurs que les valeurs qui sont nulles ou ce qui est considéré vide ne sont pas à inclure.

+0

J'ai ajouté cette annotation dans mon niveau supérieur de classe à la fois client et absent mais je reçois toujours l'erreur – Rhododendron

+0

Avez-vous pu résoudre l'erreur? – bewithaman