How to format JSON String in Java - Jackson Example Tutorial

You can format JSON String in Java using Jackson API's pretty print feature. As you might have noticed in my previous JSON tutorials that the output of the programs is not properly formatted, which makes them hard to read, especially in large log files where there are so many other texts, both JSON and normal text is there. That's why it's advised to print JSON String properly formatted because then it will stand out in log file or console. Whenever we print JSON String from Java Programs by using method writeValueAsString(), it usually comes in one line, as shown in the following example :


This is not very readable as you cannot see how many attributes are there, what is their name and value, compare it to following formatted output which is printed using Jackson's pretty print feature:

  "name" : "Virat",
 "sport" : "cricket",
  "age" : 25,
  "id" : 121,
  "lastScores" : [ 77, 72, 23, 57, 54, 36, 74, 17 ]

It's way better than earlier output, it's much more readable. You can easily identify which one is the just simple name-value pair, which one is JSON array, and much more. Wondering, how to nicely print JSON String, just check out the example shown in the next section.

And, if you are new to JSON Parsing in Java then I highly recommend you check out Jackson library. It's a very useful, versatile, and high-performance library for parsing JSON and CSV files and I think every Java developer should know about it. If you need a resource, check out this Jackson Quick Start: JSON Serialization With Java Made Easy - a free course on Udemy to learn Jackson API basics.

JSON String Format and Pretty Print Example

In this example, you will learn how to format the JSON String using Jackson's Pretty Print feature. It's easy to format JSON text, all you need to do is instead of just calling writeValueAsString() you need to first get defaultPrettyPrintWrite and then call writeValueAsString() method on that object. This will ensure that your JSON data will be nicely printed on console or log file i.e. wherever you print it.


import org.codehaus.jackson.JsonGenerationException;

 * Java program to format JSON String using Jackson API. Jackson provides
 * nice pretty print feature to print JSON text as formatted output.
 * @author Javin Paul
public class JSONPrintDemo{

    public static void main(String args[]) {

        int[] recentScores = {77, 72, 23, 57, 54, 36, 74, 17};
        Player cricketer = new Player("Virat", "cricket", 25, 121,

        ObjectMapper mapper = new ObjectMapper();

        try {
            System.out.println("Default JSON String:" 
                       + mapper.writeValueAsString(cricketer));
            System.out.println("formatted JSON String \n" 
        + mapper.defaultPrettyPrintingWriter().writeValueAsString(cricketer));
        } catch (JsonGenerationException e) {
        } catch (JsonMappingException e) {
        } catch (IOException e) {



class Player {

    private String name;
    private String sport;
    private int age;
    private int id;
    private int[] lastScores;

    public Player(String name, String sport, int age, int id, 
                     int[] lastinnings) { = name; = sport;
        this.age = age; = id;
        lastScores = lastinnings;

    public final String getName() {
        return name;

    public final String getSport() {
        return sport;

    public final int getAge() {
        return age;

    public final int getId() {
        return id;

    public final int[] getLastScores() {
        return lastScores;

    public final void setName(String name) { = name;

    public final void setSport(String sport) { = sport;

    public final void setAge(int age) {
        this.age = age;

    public final void setId(int id) { = id;

    public final void setLastScores(int[] lastScores) {
        this.lastScores = lastScores;

    public String toString() {
        return "Player [name=" + name + ", sport=" + sport 
                   + ", age=" + age + ", id=" + id + "]";


Default JSON String:{"name":"Virat","sport":"cricket","age":25,
formatted JSON String
  "name" : "Virat",
  "sport" : "cricket",
  "age" : 25,
  "id" : 121,
  "lastScores" : [ 77, 72, 23, 57, 54, 36, 74, 17 ]

Maven Dependency and JAR Files for Jackson

Since Jackson library is not part of core Java, you need to either specify Maven dependency in pom.xml file or you need to manually download those Jackson JAR files and put in your application's classpath.

How to format JSON String in Java with example

JAR files

That's all on how to format JSON String in Java using Jackson API's pretty print facility. This example is very useful while printing JSON in log files to differentiate it from other String outputs. Formatted output not only stands out in logs but also they are easier to read but there is one drawback also. You cannot grep them in one line, you need to use grep command with a context option to grep a couple of lines around matching to see full JSON output.

Further Reading
Spring Framework 5: Beginner to Guru
Microservices with Spring Cloud
Master Java Web Services and REST API with Spring Boot

If you like this tutorial and want to learn more about how to deal with JSON in Java, please checkout following amazing Java JSON tutorials  :
  • How to parse large JSON documents in Java? (code example)
  • How to read JSON String using the json-simple library? (code example)
  • How to convert JSON String to Java Object with example? (solution)
  • How to convert a JSON array to String Array in Java? (solution)
  • 3 Ways to parse JSON String in Java? (tutorial)
  • How to use Google Protocol Buffer in Java? (tutorial)
  • How to use Gson to convert JSON to Java Object? (example)

P.S. - If you are looking for online training to learn how to develop RESTful Web Services in Java using the Spring framework, I suggest you joining Eugen Paraschiv's REST with Spring course. The course has various options depending on your experience level and how much you want to learn e.g. beginner's class, intermediate class, and master class. You can join the one which suits you better, though I suggest joining the masterclass if you are serious about becoming an expert Java REST developer.


yusri said...

Many thanks indeed.
According to the API doc, since 1.9, the ObjectMapper.defaultPrettyPrintingWriter() method is deprecated. We should use ObjectMapper.writerWithDefaultPrettyPrinter() instead.

Anonymous said...

You can also pretty print JSON using Gson library, simpler and easier :
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String jsonString = gson.toJson(jsonObject);

Unknown said...

can i get the code for jason object


the values has to be increasing

Anonymous said...

you can using fastjson as well
System.out.println("FastJson start1");
User userDemo = new User(1, "2json", "2json", 30);
String jsonUser = JSON.toJSONString(userDemo);
json format online

Post a Comment