JSON: JsonMappingException tout essayer pour désérialiser un objet avec des valeurs null
J'essaie de désérialiser un objet qui contient la valeur null-propriétés et ont la JsonMappingException
.
Ce que je fais:
String actual = "{\"@class\" : \"PersonResponse\"," +
" \"id\" : \"PersonResponse\"," +
" \"result\" : \"Ok\"," +
" \"message\" : \"Send new person object to the client\"," +
" \"person\" : {" +
" \"id\" : 51," +
" \"firstName\" : null}}";
ObjectMapper mapper = new ObjectMapper();
mapper.readValue(new StringReader(json), PersonResponse.class); //EXCEPTION!
MAIS: si à jeter "firstName = null"
propriété - tout fonctionne très bien!
Je veux dire passer à la chaîne suivante:
String test = "{\"@class\" : \"PersonResponse\"," +
" \"id\" : \"PersonResponse\"," +
" \"result\" : \"Ok\"," +
" \"message\" : \"Send new person object to the client\"," +
" \"person\" : {" +
" \"id\" : 51}}";
ObjectMapper mapper = new ObjectMapper();
mapper.readValue(new StringReader(json), PersonResponse.class); //ALL WORKS FINE!
Question:
Comment éviter cette exception ou de nantissement de Jackson ignorer null-valeurs au cours de la sérialisation?
Jette:
Message:
com.fasterxml.jackson.databind.MessageJsonException:
com.fasterxml.jackson.databind.JsonMappingException:
N/A (through reference chain: person.Create["person"]->Person["firstName"])
cause:
com.fasterxml.jackson.databind.MessageJsonException:
com.fasterxml.jackson.databind.JsonMappingException:
N/A (through reference chain: prson.Create["person"]->Person["firstName"])
cause: java.lang.NullPointerException
Vous devez vous connecter pour publier un commentaire.
Si vous ne voulez pas sérialiser
null
valeurs, vous pouvez utiliser le paramètre suivant (en cours de sérialisation):Espère que cela résout votre problème.
Mais la
NullPointerException
vous obtenez lors de la désérialisation semble suspect pour moi (Jackson devrait idéalement être en mesure de gérernull
valeurs sérialisées de sortie). Pourriez-vous poster le code correspondant à laPersonResponse
classe?Parfois, ce problème se produit lorsque accidentellement à l'aide d'un type primitif comme type de retour de la lecture d'un non-primitif champ:
Avis le "float" au lieu de "Float" pour le getValue()-méthode, cela peut conduire à une Exception de Pointeur Null, même lorsque vous avez ajouté
getValue()
, qui est essentiellement faire "valeur de retour.floatValue()" pour obtenir de primitif, d'où des NPE. L'appelant n'a aucun moyen de les éviter, ou de savoir qu'il y est un problème (à moins que il est allé et décodé bytecode etc).Boolean
et une méthodeboolean get...()
.J'ai aussi été confronté au même problème.
J'ai juste inclus un constructeur par défaut dans le modèle de la classe avec les autres constructeur avec paramètres.
Il a travaillé.
Ajouter JsonProperty annotation à votre attribut À la classe, comme ci-dessous