Jackson – Marshall String to JsonNode

1. Overview

This quick tutorial will show how to use Jackson 2 to convert a JSON String to a JsonNode (com.fasterxml.jackson.databind.JsonNode).

If you want to dig deeper and learn other cool things you can do with the Jackson 2 – head on over to the main Jackson tutorial.

2. Quick Parsing

Very simply, to parse the JSON String we only need an ObjectMapper:

@Test
public void whenParsingJsonStringIntoJsonNode_thenCorrect() 
  throws JsonParseException, IOException {
    String jsonString = "{"k1":"v1","k2":"v2"}";

    ObjectMapper mapper = new ObjectMapper();
    JsonNode actualObj = mapper.readTree(jsonString);

    assertNotNull(actualObj);
}

3. Low Level Parsing

If, for some reason, you need to go lower level than that, the following example exposes the JsonParser responsible with the actual parsing of the String:

@Test
public void givenUsingLowLevelApi_whenParsingJsonStringIntoJsonNode_thenCorrect() 
  throws JsonParseException, IOException {
    String jsonString = "{"k1":"v1","k2":"v2"}";

    ObjectMapper mapper = new ObjectMapper();
    JsonFactory factory = mapper.getFactory();
    JsonParser parser = factory.createParser(jsonString);
    JsonNode actualObj = mapper.readTree(parser);

    assertNotNull(actualObj);
}

4. Using the JsonNode

After the JSON is parsed into a JsonNode Object, we can work with the Jackson JSON Tree Model:

@Test
public void givenTheJsonNode_whenRetrievingDataFromId_thenCorrect() 
  throws JsonParseException, IOException {
    String jsonString = "{"k1":"v1","k2":"v2"}";
    ObjectMapper mapper = new ObjectMapper();
    JsonNode actualObj = mapper.readTree(jsonString);

    // When
    JsonNode jsonNode1 = actualObj.get("k1");
    assertThat(jsonNode1.textValue(), equalTo("v1"));
}

5. Conclusion

This article illustrated how to parse JSON Strings into the Jackson JsonNode model to enable a structured processing of the JSON Object.

The implementation of all these examples and code snippets can be found in my github project – this is an Eclipse based project, so it should be easy to import and run as it is.

Related posts:

Java Collections Interview Questions
Java Program to Implement Stack
Setting a Request Timeout for a Spring REST API
How to Replace Many if Statements in Java
Java Program to Implement SynchronosQueue API
Write/Read cookies using HTTP and Read a file from the internet
Spring Boot - Exception Handling
ExecutorService – Waiting for Threads to Finish
Java Program to Search for an Element in a Binary Search Tree
Java Program to Implement Quick Sort with Given Complexity Constraint
Java Program to Check whether Undirected Graph is Connected using BFS
Java Program to Perform Encoding of a Message Using Matrix Multiplication
Convert XML to JSON Using Jackson
Java Program to Implement ConcurrentSkipListMap API
Java IO vs NIO
Java Program to Solve Tower of Hanoi Problem using Stacks
A Guide to Java HashMap
Java Program to Check if an UnDirected Graph is a Tree or Not Using DFS
Java Program to Implement Coppersmith Freivald’s Algorithm
Java Program to Check Whether Graph is DAG
Spring MVC and the @ModelAttribute Annotation
Java Program to Implement Floyd Cycle Algorithm
Java Program to Find the Edge Connectivity of a Graph
Introduction to Java Serialization
@Before vs @BeforeClass vs @BeforeEach vs @BeforeAll
Spring Cloud AWS – Messaging Support
Derived Query Methods in Spring Data JPA Repositories
Java Program to Check Whether a Directed Graph Contains a Eulerian Cycle
An Introduction to ThreadLocal in Java
Guide to the Java TransferQueue
Spring Boot - File Handling
Java Program to Generate Random Numbers Using Probability Distribution Function