web-dev-qa-db-fra.com

Comment définir un champ json facultatif à l'aide de Jackson

J'ai un objet avec un champ facultatif et je ne trouve pas d'annotation appropriée pour le modéliser. Des idées, quelle est la bonne façon de le faire avec Jackson?

25
mkorszun

Dans Jackson, vous ne pouvez pas faire la différence entre les champs facultatifs et non facultatifs. Déclarez simplement n'importe quel champ de votre POJO. Si un champ n'est pas présent dans votre structure JSON, Jackson n'appellera pas le setter. Vous pouvez savoir si un passeur a été appelé avec un drapeau dans le POJO.

35
saberobserver

Venir en retard à la fête ...

En utilisant Jackson 2.8.6 via Spring HttpMessageConverter 4.3.6, j'ai dû changer mon setter paramètre pour le type déballé, comme ceci:

class Foo {
    private Optional<Bar> bar;

    public void setBar(Bar bar) { // NOT Optional<Bar>, this gives me Optional.empty()
        this.bar = Optional.of(bar);
    }

    // getter doesn't need to be changed
}
7
pyb