Serialization – Converting Map to JSON String Using Jackson API

Serialization is a fundamental concept in software development where objects or data structures are transformed into a format suitable for storage or transmission. One common use case involves converting a Map in Java into a JSON string. In this post, we’ll explore how to achieve this using the Jackson API, a popular library for working with JSON in Java.


Why Jackson API?

The Jackson library is widely used for its performance, ease of use, and rich feature set for processing JSON. It provides two main classes for serialization:

  1. ObjectMapper – The primary class for converting between Java objects and JSON.
  2. JsonNode – A tree model for manipulating JSON data.

In this tutorial, we’ll focus on using ObjectMapper for converting a Java Map to a JSON string.


Step-by-Step Guide

1. Add Jackson Library to Your Project

If you are using Maven, include the following dependency in your pom.xml:

<dependency>

    <groupId>com.fasterxml.jackson.core</groupId>

    <artifactId>jackson-databind</artifactId>

    <version>2.15.2</version> <!-- Use the latest version -->

</dependency>

2. Create a Java Map

Let’s start by creating a Map object that we want to serialize into a JSON string.

import java.util.HashMap;

import java.util.Map;


public class MapToJsonExample {

    public static void main(String[] args) {

        // Create a sample Map

        Map<String, Object> data = new HashMap<>();

        data.put("id", 101);

        data.put("name", "Pavan Kumar Bhimavarapu");

        data.put("role", "SDET-QA");

        data.put("skills", new String[]{"Java", "Selenium", "TestNG"});

        data.put("isAvailable", true);

    }

}

3. Use ObjectMapper to Convert Map to JSON

Jackson’s ObjectMapper makes it incredibly simple to serialize a Java object, including a Map, into JSON.

import com.fasterxml.jackson.databind.ObjectMapper;


public class MapToJsonExample {

    public static void main(String[] args) {

        // Create a sample Map

        Map<String, Object> data = new HashMap<>();

        data.put("id", 101);

        data.put("name", "Pavan Kumar Bhimavarapu");

        data.put("role", "SDET-QA");

        data.put("skills", new String[]{"Java", "Selenium", "TestNG"});

        data.put("isAvailable", true);


        try {

            // Create an ObjectMapper instance

            ObjectMapper objectMapper = new ObjectMapper();


            // Convert Map to JSON String

            String jsonString = objectMapper.writeValueAsString(data);


            // Print the JSON string

            System.out.println("JSON Output: " + jsonString);

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

}

4. Output

Running the above code will produce the following JSON string:

{

  "id": 101,

  "name": "Pavan Kumar Bhimavarapu",

  "role": "SDET-QA",

  "skills": ["Java", "Selenium", "TestNG"],

  "isAvailable": true

}

Additional Features

Jackson also provides additional features to customize serialization:

Pretty Printing

To format the JSON string for better readability:

String prettyJson = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(data);

System.out.println("Pretty JSON Output: \n" + prettyJson);

Output:

{
  "id": 101,
  "name": "Pavan Kumar Bhimavarapu",
  "role": "SDET-QA",
  "skills": [
    "Java",
    "Selenium",
    "TestNG"
  ],
  "isAvailable": true
}

Ignoring Null Values

If you want to exclude fields with null values, configure the ObjectMapper:

objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);

Followers