How to merge two JSON strings in an order using JsonParserSequence in Java?

The JsonParserSequence is a helper class that can be used to create a parser containing two sub-parsers placed in a particular sequence. We can create a sequence using the static method createFlattened() of the JsonParserSequence class.

Syntax

public static JsonParserSequence createFlattened(JsonParser first, JsonParser second)

Example

import java.io.*;
import com.fasterxml.jackson.core.*;
import com.fasterxml.jackson.core.util.*;
public class JsonParserSequenceTest {
   public static void main(String[] args) throws JsonParseException, IOException {
      String jsonString1 = "{"id":"101", "name":"Ravi Chandra", "address":"Pune"}";
      String jsonString2 = "{"id":"102", "name":"Raja Ramesh", "address":"Hyderabad", "contacts":[{"mobile":"9959984805", "home":"7702144400"}]}";
      JsonFactory jsonFactory = new JsonFactory();
      JsonParser jsonParser1 = jsonFactory.createParser(jsonString1);
      JsonParser jsonParser2 = jsonFactory.createParser(jsonString2);
      JsonParserSequence jsonParserSequence = JsonParserSequence.createFlattened(jsonParser1, jsonParser2);
      JsonToken jsonToken = jsonParserSequence.nextToken();
         while(jsonToken != null) {
            switch(jsonToken) {
               case FIELD_NAME: System.out.println("Key field: " + jsonParserSequence.getText());
               break;
               case VALUE_FALSE:
               case VALUE_NULL:
               case VALUE_NUMBER_FLOAT:
               case VALUE_NUMBER_INT:
               case VALUE_STRING:
               case VALUE_TRUE: System.out.println("Key value: " + jsonParserSequence.getText());
               break;
            }
            jsonToken = jsonParserSequence.nextToken();
         }
      jsonParserSequence.close();
   }
}

Output

Key field: id
Key value: 101
Key field: name
Key value: Ravi Chandra
Key field: address
Key value: Pune
Key field: id
Key value: 102
Key field: name
Key value: Raja Ramesh
Key field: address
Key value: Hyderabad
Key field: contacts
Key field: mobile
Key value: 9959984805
Key field: home
Key value: 7702144400
Updated on: 2020-07-07T13:06:13+05:30

931 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements