How to Ignore Unknown Properties While Parsing JSON in Java?


When working with JSON data in Java, developers may encounter unknown properties or fields that are not defined in the corresponding Java class. These unidentified elements can create problems during the parsing process, resulting in exceptions or lost data. To tackle this issue, programmers can incorporate a mechanism to ignore such unknown properties while parsing JSON.

Configuring the JSON parser appropriately can prevent unexpected properties from disrupting an application's functionality. By skipping unrecognized properties and only parsing the ones that match the defined structure, JSON data can be parsed in a more robust and flexible manner. This ensures that crucial information is not overlooked, while unwanted or invalid data is ignored.

JSON

Java incorporates JSON (JavaScript Object Notation) as a lightweight and widely-used data interchange format for transmitting and storing structured data. Its simple and human-re-adable format permits the representation of objects, arrays, strings, numbers, booleans, and null values. JSON's composition includes key-value pairs using keys in string form easing its processing load.

RephraseThe JSON format in Java is often expressed as a string and converted to/from Java objects using parsing and serialization libraries. These APIs enable integration between JSON-based systems and Java applications by allowing JSON strings to be parsed into Java objects, and vice versa. This seamless communication facilitates easy data exchange between different systems.

Approaches

There are several methods to ignore unknown properties while parsing JSON in Java. Here are a few commonly used approaches:

  • Jackson Library with ObjectMapper

  • Gson Library with GsonBuilder

  • JSON-B (Java API for JSON Binding)

  • Manual Parsing

Jackson Library with ObjectMapper

This method involves configuring the ObjectMapper, a class provided by the Jackson library, by setting the DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES feature to false. This allows the ObjectMapper to ignore unknown properties while parsing JSON, preventing exceptions from being thrown.

Algorithm

  • Create an instance of ObjectMapper.

  • Configure the ObjectMapper to set the DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES feature to false.

  • Use the ObjectMapper to parse the JSON data into the desired Java object.

Example

import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;

public class JacksonExample {
   public static void main(String[] args) throws Exception {
      String jsonString = "{"name": "John", "age": 25, "unknownProperty": "Value"}";

      ObjectMapper objectMapper = new ObjectMapper();
 
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

      Person person = objectMapper.readValue(jsonString, Person.class);
      System.out.println(person);
   }
}

class Person {
   private String name;
   private int age;

   // Getters and setters

   @Override
   public String toString() {
      return "Person{" +
            "name='" + name + ''' +
            ", age=" + age +
            '}';
   }
}

Output

Person{name='John', age=25}

Gson Library with GsonBuilder

To use the Gson library in this method, one needs to create a Gson instance using the GsonBuilder class. This can be achieved by calling the setIgnoreUnknownProperties() method with a parameter of true. Doing so instructs Gson to ignore unknown properties during JSON parsing, ensuring that they are not treated as errors.

Algorithm

  • Create an instance of GsonBuilder.

  • Call the setIgnoreUnknownProperties(true) method on the GsonBuilder instance.

  • Build a Gson object using the GsonBuilder.

  • Use the Gson object to parse the JSON data into the desired Java object.

Example

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

public class GsonExample {
   public static void main(String[] args) {
      String jsonString = "{"name": "John", "age": 25, "unknownProperty": "Value"}";

      Gson gson = new GsonBuilder()
            .setIgnoreUnknownProperties(true)
            .create();

      Person person = gson.fromJson(jsonString, Person.class);
      System.out.println(person);
   }
}

class Person {
   private String name;
   private int age;

   // Getters and setters

   @Override
   public String toString() {
      return "Person{" +
            "name='" + name + ''' +
            ", age=" + age +
            '}';
   }
}

Output

Person{name='John', age=25}

JSON-B (Java API for JSON Binding)

To ignore unknown properties using JSON-B, the Java class representing the JSON structure needs to be annotated with @JsonbTransient on the fields or properties that should be ignored. This annotation informs the JSON-B library to skip those properties during the JSON parsing process.

Algorithm

  • Annotate the Java class representing the JSON structure with @JsonbTransient on fields or properties to be ignored.

  • Use a JSON-B implementation to parse the JSON data into the desired Java object.

Example

import javax.json.bind.Jsonb;
import javax.json.bind.JsonbBuilder;

public class JsonBExample {
   public static void main(String[] args) {
      String jsonString = "{"name": "John", "age": 25, "unknownProperty": "Value"}";

      Jsonb jsonb = JsonbBuilder.create();

      Person person = jsonb.fromJson(jsonString, Person.class);
      System.out.println(person);
   }
}

class Person {
   private String name;
   private int age;

   // Getters and setters

   @Override
   public String toString() {
      return "Person{" +
            "name='" + name + ''' +
            ", age=" + age +
            '}';
   }
}

Output

Person{name='John', age=25}

Manual Parsing

To parse JSON data using a library like org.json or json-simple, developers follow a method of manually iterating through the keys and values of the JSON object. By processing recognized properties selectively and ignoring unknown ones, developers can customize the parsing behavior they need.

Algorithm

  • Use a JSON library like org.json or json-simple to parse the JSON data into a JSON object.

  • Iterate through the keys and values of the JSON object.

  • Process the recognized properties and ignore any unrecognized or unknown properties during iteration.

Example

import org.json.JSONObject;

public class ManualParsingExample {
   public static void main(String[] args) {
      String jsonString = "{"name": "John", "age": 25, "unknownProperty": "Value"}";

      JSONObject jsonObject = new JSONObject(jsonString);

      String name = jsonObject.optString("name");
      int age = jsonObject.optInt("age");

      Person person = new Person();
      person.setName(name);
      person.setAge(age);

      System.out.println(person);
   }
}

class Person {
   private String name;
   private int age;

   // Getters and setters

   @Override
   public String toString() {
      return "Person{" +
            "name='" + name + ''' +
            ", age=" + age +
            '}';
   }
}

Output

Person{name='John', age=25}

Conclusion

In this tutorial, when parsing JSON in Java, it is important to handle unknown properties appropriately to ensure robustness and flexibility in data processing. By utilizing methods such as configuring ObjectMapper with Jackson, using Gson with GsonBuilder, leveraging JSON-B annotations, or manually parsing the JSON data, developers can effectively ignore unknown properties and mitigate potential issues while parsing JSON in Java.

Updated on: 25-Jul-2023

1K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements