# How to pretty print JSON using Jackson in Java

By Atta Ur Rehman Shah (https://attacomsian.com/about). Published Nov 16, 2019, updated Oct 14, 2022. Topics: Java, JSON, Jackson.
Canonical URL: https://attacomsian.com/blog/jackson-pretty-print-json

> A short tutorial to learn how to enable pretty print JSON output using Jackson.

In this short article, you'll learn how to use [Jackson](https://attacomsian.com/blog/jackson-read-write-json) to **enable pretty print JSON** output.

By default, Jackson outputs the final JSON in the compact format:

```java
try {
    // create user object
    User user = new User("John Doe", "john.doe@example.com",
            new String[]{"Member", "Admin"}, true);

    // convert user object to JSON
    String json = new ObjectMapper().writeValueAsString(user);

    // print JSON string
    System.out.println(json);

} catch (Exception ex) {
    ex.printStackTrace();
}
```

Here is what the generated JSON looks like:

```json
{"name":"John Doe","email":"john.doe@example.com","roles":["Member","Admin"],"admin":true}
```

To enable the pretty print JSON output while serializing a Java Object, you can use the `writerWithDefaultPrettyPrinter()` method of `ObjectMapper`:

```java
try {
    // create user object
    User user = new User("John Doe", "john.doe@example.com",
            new String[]{"Member", "Admin"}, true);

    // create object mapper instance
    ObjectMapper mapper = new ObjectMapper();

    // convert user object to pretty print JSON
    String json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(user);

    // print JSON string
    System.out.println(json);

} catch (Exception ex) {
    ex.printStackTrace();
}
```

Now here is what the final pretty print JSON looks like:

```json
{
  "name" : "John Doe",
  "email" : "john.doe@example.com",
  "roles" : [ "Member", "Admin" ],
  "admin" : true
}
```

You can also enable the pretty print JSON output globally by using the `DefaultPrettyPrinter` class, as shown below:

```java
try {
    // create user object
    User user = new User("John Doe", "john.doe@example.com",
            new String[]{"Member", "Admin"}, true);

    // create object mapper instance
    ObjectMapper mapper = new ObjectMapper();

    // create an instance of DefaultPrettyPrinter
    ObjectWriter writer = mapper.writer(new DefaultPrettyPrinter());

    // convert user object to pretty print JSON
    String json = writer.writeValueAsString(user);

    // print JSON string
    System.out.println(json);

} catch (Exception ex) {
    ex.printStackTrace();
}
```

For more Jackson examples, check out the [how to read and write JSON using Jackson in Java](https://attacomsian.com/blog/jackson-read-write-json) tutorial.
