Make Selenium Easy

REST Assured Tutorial 41 – Ignore unknown properties during deserialization Using @JsonIgnoreProperties

Introduction

As a part of End to End REST Assured Tutorial, in this post, We will learn about how unknown properties during deserialization creates a problem and how can we avoid them using @JsonIgnorePropertoies.

Prerequisite

About @JsonIgnoreProperties

@JsonIgnoreProperties Annotation Of Jackson API – Exclude Field Of Pojo From Serialization Or Deserialization Or Both

Required Java Library

Since we are using Jackson API of Java for this example, make sure you have the latest dependency of Jackson Databind in your project classpath. I have used below Jackson dependency for this post:-

Understand the meaning of known and unknown properties

Before we go for an actual topic let’s understand the meaning of words “known” and “unknown” properties. If a property is included in a POJO class or if a property exists in POJO class then it is a known property for that POJO class. A property that is not known to a POJO class is unknown. Let’s see the behavior when a known property is missing during deserialization.

Missing known properties during deserialization

Suppose we have a POJO as below:-

Deserialize with some missing known properties

We will not include all known properties in JSON during deserialization as shown below:-

Output

In JSON string three known properties are missing i.e. age, salary, and married. After deserialization, these fields have a default value. There is no error thrown for those missing values for known properties.

Additional unknown properties during deserialization

In the previous example, we had missing known properties in our JSON. Now we will have some additional unknown properties in JSON and observe behavior during deserialization.

Deserialize with some additional unknown properties

There are some additional unknown fields that are present in JSON string i.e. fullName and eligibleForVote. When we try to deserialize above JSON string we get the output as below:-

Output

As you can see deserialization failed at the encounter of first unknown property “fullName”. It also gives a list of all known properties.

@JsonIgnoreProperties – ignoreUnknown

We want that if there are any unknown fields in JSON then the deserialization process should ignore them. This we can achieve using a property called “ignoreUnknown” of @JsonIgnoreProperties annotation. It accepts a boolean value and the default value is false. To ignore unknown property we need to set it true at the class level.

POJO with ignoring unknown properties

Deserialize with some additional unknown properties

There is no change in the above deserialization code.

Output

You can download/clone the above sample project from here.

If you have any doubt, feel free to comment below.
If you like my posts, please like, comment, share and subscribe.
#ThanksForReading
#HappyLearning

Find all Selenium related posts here, all API manual and automation related posts here, and find frequently asked Java Programs here.

Many other topics you can navigate through the menu.

Author: Amod Mahajan

A software Tester who is paid to judge products developed by others. Currently getting paid in American Dollars. Writing technical posts and creating YouTube videos are my hobbies.

Leave a Reply

Please wait...

Subscribe to new posts to become automation expert

Want to be notified when my new post is published? Get my posts in your inbox.