Jackson: Custom JSON désérialiseur
-
02-10-2019 - |
Question
J'utilise ObjectMapper de la bibliothèque Jackson pour désérialisation JSON en objets Java. J'utilise « câblage » du printemps. J'ai créé désérialiseurs personnalisés pour effectuer la conversion de chaîne JSON à POJO. Cependant, lorsque l'entrée est mauvais (. Par exemple, un certain nombre est passé comme « 124A » - caractère illégal) une désérialiseur par défaut est invoquée et des bombes avec le NumberFormatException. Y at-il un moyen d'empêcher les convertisseurs par défaut d'être appelé?
La solution
Ok, étant donné que l'entrée n'est pas JSON valide (chiffres ne peuvent pas commencer ou contenir « $ »), désérialiseur ne sera pas appelé, et tout changement devrait appliquer à l'analyseur. Il n'y a pas de commutateurs à Jackson pour permettre ce contenu d'être considérés comme des nombres.
Si vous pouvez contrôler l'entrée, il suffit de changer la valeur à une chaîne (ajouter des guillemets doubles autour de la valeur). Parser passe alors comme JSON chaîne, et les données des composants de fixation obtenir une chance de le manipuler (JsonDeserializer).