

- Trending Categories
Data Structure
Networking
RDBMS
Operating System
Java
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
How to handle the errors generated while deserializing a JSON in Java?
The DeserializationProblemHandler class can be registered to get called when a potentially recoverable problem is encountered during the deserialization process. We can handle the errors generated while deserializing the JSON by implementing the handleUnknownProperty() method of DeserializationProblemHandler class.
Syntax
public boolean handleUnknownProperty(DeserializationContext ctxt, JsonParser p, JsonDeserializer deserializer, Object beanOrClass, String propertyName) throws IOException
Example
import java.io.*; import com.fasterxml.jackson.core.*; import com.fasterxml.jackson.databind.*; import com.fasterxml.jackson.databind.deser.*; public class DeserializationErrorTest { public static void main(String[] args) throws JsonMappingException, JsonGenerationException, IOException { String jsonString = "{\"id\":\"101\", \"name\":\"Ravi Chandra\", \"address\":\"Pune\", \"salary\":\"40000\" }"; ObjectMapper objectMapper = new ObjectMapper(); DeserializationProblemHandler deserializationProblemHandler = new UnMarshallingErrorHandler(); objectMapper.addHandler(deserializationProblemHandler); Customer customer = objectMapper.readValue(jsonString, Customer.class); System.out.println(customer); } } // UnMarshallingErrorHandler class class UnMarshallingErrorHandler extends DeserializationProblemHandler { @Override public boolean handleUnknownProperty(DeserializationContext ctxt, JsonParser jp, JsonDeserializer deserializer, Object beanOrClass, String propertyName) throws IOException, JsonProcessingException { boolean result = false; super.handleUnknownProperty(ctxt, jp, deserializer, beanOrClass, propertyName); System.out.println("Property with name '" + propertyName + "' doesn't exist in Class of type '" + beanOrClass.getClass().getName() + "'"); return true; // returns true to inform the deserialization process that we can handle the error and it can continue deserializing and returns false, if we want to stop the deserialization immediately. } } // Customer class class Customer { private int id; private String name; private String address; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { return "Customer [id=" + id + ", name=" + name + ", address=" + address + "]"; } }
Output when true is returned
Property with name 'salary' doesn't exist in Class of type 'Customer' Customer [id=101, name=Ravi Chandra, address=Pune]
Output when false is returned
Property with name 'salary' doesn't exist in Class of type 'Customer' Exception in thread "main" com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "salary" (class Customer), not marked as ignorable (3 known properties: "id", "address", "name"]) at [Source: (String)"{"id":"101", "name":"Ravi Chandra", "address":"Pune", "salary":"40000" }"; line: 1, column: 65] (through reference chain: Customer["salary"]) at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:61) at com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:840) at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:1179) at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1592) at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1570) at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:294) at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:151) at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4202) at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3205) at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3173) at DeserializationErrorTest.main(DeserializationErrorTest.java:12)
- Related Questions & Answers
- How to handle errors while working with Navigation in ReactNative?
- How to handle Geolocation errors in HTML5?
- How to handle errors in HTML5 Web Workers?
- How to handle errors within WaitGroups in Golang?
- How to handle errors in middleware C# Asp.net Core?
- How can MySQL handle the errors during trigger execution?
- How to Deserializing JSON to .NET object using Newtonsoft json in C# and pick only one value from the array?
- How to handle static JSON in Rest Assured?
- In MySQL, how can we declare a handler while handling errors?
- How to handle Null values while working with JDBC?
- How to handle Exceptions while working with JDBC applications?
- What is MySQL GENERATED COLUMN and how to use it while creating a table?
- How to handle the Runtime Exception in Java?
- How to handle the ArithmeticException (unchecked) in Java?
- How to handle the NumberFormatException (unchecked) in Java?
Advertisements