Jackson - Enable Pretty Print JSON Output

📘 Premium Read: Access my best content on Medium member-only articles — deep dives into Java, Spring Boot, Microservices, backend architecture, interview preparation, career advice, and industry-standard best practices.

🎓 Top 15 Udemy Courses (80-90% Discount): My Udemy Courses - Ramesh Fadatare — All my Udemy courses are real-time and project oriented courses.

▶️ Subscribe to My YouTube Channel (176K+ subscribers): Java Guides on YouTube

▶️ For AI, ChatGPT, Web, Tech, and Generative AI, subscribe to another channel: Ramesh Fadatare on YouTube

In this quick tutorial, I show you how to use Jackson library to pretty print JSON Object to console or external file.

Dependencies

Let’s first add the following dependencies to the pom.xml:
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.8</version> </dependency>
This dependency will also transitively add the following libraries to the classpath:
  • jackson-annotations-2.9.8.jar
  • jackson-core-2.9.8.jar
  • jackson-databind-2.9.8.jar
Always use the latest versions on the Maven central repository for Jackson databind.
I found two ways we can configure and enable pretty print JSON with ObjectMapper class.
  1. Using ObjectMapper.writerWithDefaultPrettyPrinter() Method
  2. Using ObjectMapper.enable(SerializationFeature.INDENT_OUTPUT) Method

1. Using ObjectMapper.writerWithDefaultPrettyPrinter() Method

// Create ObjectMapper object. ObjectMapper mapper = new ObjectMapper(); User bean = new User(1, "Ramesh", "Fadatare", "Ramesh Fadatare"); String result = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(bean);
Output:
{ "id" : 1, "firstName" : "Ramesh", "lastName" : "Fadatare", "fullName" : "Ramesh Fadatare" }

2. Using ObjectMapper.enable(SerializationFeature.INDENT_OUTPUT) Method

// Create ObjectMapper object. ObjectMapper mapper = new ObjectMapper(); mapper.enable(SerializationFeature.INDENT_OUTPUT); User bean = new User(1, "Ramesh", "Fadatare", "Ramesh Fadatare"); String result = mapper.writeValueAsString(bean); System.out.println(result);
Output:
{ "id" : 1, "firstName" : "Ramesh", "lastName" : "Fadatare", "fullName" : "Ramesh Fadatare" }

Complete Example

Let's develop a complete example. Let's first create a User class:

User.java

package net.javaguides.jackson.annotations; public class User { public int id; private String firstName; private String lastName; private String fullName; public User(int id, String firstName, String lastName, String fullName) { super(); this.id = id; this.firstName = firstName; this.lastName = lastName; this.fullName = fullName; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public String getFullName() { return fullName; } public void setFullName(String fullName) { this.fullName = fullName; } }

Using ObjectMapper.writerWithDefaultPrettyPrinter() Method

package net.javaguides.jackson.annotations; import java.io.IOException; import com.fasterxml.jackson.databind.ObjectMapper; public class Demo { public static void main(String[] args) throws IOException { // Create ObjectMapper object. ObjectMapper mapper = new ObjectMapper(); User bean = new User(1, "Ramesh", "Fadatare", "Ramesh Fadatare"); String result = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(bean); System.out.println(result); } }
Output:
{ "id" : 1, "firstName" : "Ramesh", "lastName" : "Fadatare", "fullName" : "Ramesh Fadatare" }

Using ObjectMapper.enable(SerializationFeature.INDENT_OUTPUT) Method

package net.javaguides.jackson.annotations; import java.io.IOException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; public class JsonPropertyAnnotationTest { public static void main(String[] args) throws IOException { // Create ObjectMapper object. ObjectMapper mapper = new ObjectMapper(); mapper.enable(SerializationFeature.INDENT_OUTPUT); User bean = new User(1, "Ramesh", "Fadatare", "Ramesh Fadatare"); String result = mapper.writeValueAsString(bean); System.out.println(result); } }
Output:
{ "id" : 1, "firstName" : "Ramesh", "lastName" : "Fadatare", "fullName" : "Ramesh Fadatare" }

Related Articles


GitHub Repository

The source code of this article available on my GitHub repository at https://github.com/RameshMF/jackson-json-tutorial

Comments

Spring Boot 3 Paid Course Published for Free
on my Java Guides YouTube Channel

Subscribe to my YouTube Channel (165K+ subscribers):
Java Guides Channel

Top 10 My Udemy Courses with Huge Discount:
Udemy Courses - Ramesh Fadatare