Jackson is a popular open-source library for reading, writing, and parsing JSON data in Java. In this short tutorial, you'll learn how to create a JSON array using Jackson API.

Dependencies

To add Jackson to your Gradle project, add the following dependency to build.gradle file:

implementation 'com.fasterxml.jackson.core:jackson-databind:2.10.0'

For Maven, include the below dependency to your pom.xml file:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.10.0</version>
</dependency>

Create a JSON Array

The following example demonstrates how you can use the ObjectMapper class to produce a JSON array:

try {
    // create `ObjectMapper` instance
    ObjectMapper mapper = new ObjectMapper();

    // create three JSON objects
    ObjectNode user1 = mapper.createObjectNode();
    user1.put("id", 1);
    user1.put("name", "John Doe");

    ObjectNode user2 = mapper.createObjectNode();
    user2.put("id", 2);
    user2.put("name", "Tom Doe");

    ObjectNode user3 = mapper.createObjectNode();
    user3.put("id", 3);
    user3.put("name", "Emma Doe");

    // create `ArrayNode` object
    ArrayNode arrayNode = mapper.createArrayNode();

    // add JSON users to array
    arrayNode.addAll(Arrays.asList(user1, user2, user3));

    // convert `ArrayNode` to pretty-print JSON
    // without pretty-print, use `arrayNode.toString()` method
    String json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(arrayNode);

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

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

The above code will produce the following pretty-print JSON array:

[ {
  "id" : 1,
  "name" : "John Doe"
}, {
  "id" : 2,
  "name" : "Tom Doe"
}, {
  "id" : 3,
  "name" : "Emma Doe"
} ]

Create a Nested JSON Array

Just a like a simple JSON array, you can also create a JSON array inside another JSON array using Jackson, as shown below:

try {
    // create `ObjectMapper` instance
    ObjectMapper mapper = new ObjectMapper();

    // create three JSON objects
    ObjectNode vendor1 = mapper.createObjectNode();
    vendor1.put("name", "Ford");

    ObjectNode vendor2 = mapper.createObjectNode();
    vendor2.put("name", "BMW");

    ObjectNode vendor3 = mapper.createObjectNode();
    vendor3.put("name", "Fiat");

    // create nested arrays
    ArrayNode models1 = mapper.createArrayNode();
    models1.add("Fiesta");
    models1.add("Focus");
    models1.add("Mustang");

    ArrayNode models2 = mapper.createArrayNode();
    models2.add("320");
    models2.add("X3");
    models2.add("X5");

    ArrayNode models3 = mapper.createArrayNode();
    models3.add("500");
    models3.add("Panda");

    // add nested arrays to JSON objects
    vendor1.set("models", models1);
    vendor2.set("models", models2);
    vendor3.set("models", models3);

    // create `ArrayNode` object
    ArrayNode arrayNode = mapper.createArrayNode();

    // add JSON objects to array
    arrayNode.addAll(Arrays.asList(vendor1, vendor2, vendor3));

    // convert `ArrayNode` to pretty-print JSON
    String json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(arrayNode);

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

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

The above code will generate the following JSON array:

[ {
  "name" : "Ford",
  "models" : [ "Fiesta", "Focus", "Mustang" ]
}, {
  "name" : "BMW",
  "models" : [ "320", "X3", "X5" ]
}, {
  "name" : "Fiat",
  "models" : [ "500", "Panda" ]
} ]

For more Jackson examples, check out the How to read and write JSON using Jackson in Java tutorial.

✌️ Like this article? Follow @attacomsian on Twitter. You can also follow me on LinkedIn and DEV. Buy me a coffee (cost $3)

Need help to start a new Spring Boot or MEAN stack project? I am available for contract work. Hire me to accomplish your business goals with engineering and design. Let’s talk about your project: hi@attacomsian.com.