Yes, the Jackson manual parser design is quite different from other libraries. In particular, you will notice that JsonNode has most of the functions that you would typically associate with array nodes from other APIs. As such, you do not need to cast to an ArrayNode to use. Here's an example:

JSON:

{
    "objects" : ["One", "Two", "Three"]
}

Code:

final String json = "{\"objects\" : [\"One\", \"Two\", \"Three\"]}";

final JsonNode arrNode = new ObjectMapper().readTree(json).get("objects");
if (arrNode.isArray()) {
    for (final JsonNode objNode : arrNode) {
        System.out.println(objNode);
    }
}

Output:

"One"
"Two"
"Three"

Note the use of isArray to verify that the node is actually an array before iterating. The check is not necessary if you are absolutely confident in your data structure, but it's available should you need it (and this is no different from most other JSON libraries).

Answer from Perception on Stack Overflow
🌐
Java Code Geeks
javacodegeeks.com › home › enterprise java
Simplified Json Array Operations with JsonNode in Jackson
May 6, 2024 - Jackson is a popular Java library used for JSON processing. JsonNode is a fundamental abstraction representing a node in the JSON tree structure, capable of representing various JSON types such as objects, arrays, strings, numbers, and more. When working with JSON arrays ([]), the ArrayNode class in Jackson is especially useful for handling Simplified Array Operations on JsonNode in Jackson, enabling efficient manipulation and traversal of JSON arrays within Java applications.
🌐
DEV Community
dev.to › abharangupta › dive-into-jackson-for-json-in-java-understanding-jsonnode-arraynode-and-objectmapper-30g4
Dive into Jackson for JSON in Java: Understanding JsonNode, ArrayNode, and ObjectMapper - DEV Community
October 22, 2024 - ArrayNode is a special type of JsonNode that represents an array of JSON objects. We loop through each element in the array and print out the "name" of each person. Easy, right? With ArrayNode, Jackson makes handling JSON arrays a breeze!
🌐
Baeldung
baeldung.com › home › json › jackson › simplified array operations on jsonnode without typecasting in jackson
Simplified Array Operations on JsonNode Without Typecasting in Jackson | Baeldung
June 27, 2025 - Working with JSON (JavaScript Objеct Notation) in Java often involves using librariеs like Jackson, which provides various classеs to rеprеsеnt this type of data, such as JsonNodе, ObjectNode, and ArrayNode.
🌐
Medium
medium.com › @lakshmanaselvan252 › explain-about-the-jsonnode-and-arraynode-in-spring-boot-17f81c3de915
Explain About The JsonNode And ArrayNode In Spring Boot | by Lakshmana Selvan V | Medium
August 21, 2024 - ObjectMapper Initialization: The ObjectMapper instance is created, which is the main class used to parse JSON in Jackson. JSON String: The jsonString variable holds a simple JSON string representing an object with two fields: "name" and "age". Parsing JSON: The objectMapper.readTree(jsonString) method parses the JSON string into a JsonNode object. This JsonNode represents the entire JSON structure as a tree. ... ArrayNode is a subclass of JsonNode specifically designed to represent JSON arrays.
🌐
Fasterxml
fasterxml.github.io › jackson-databind › javadoc › 2.8 › com › fasterxml › jackson › databind › node › ArrayNode.html
ArrayNode (jackson-databind 2.8.0 API)
If you want valid JSON output (or output formatted using one of other Jackson supported data formats) make sure to use ObjectMapper or ObjectWriter to serialize an instance, for example: String json = objectMapper.writeValueAsString(rootNode); Note: method defined as abstract to ensure all implementation classes explicitly implement method, instead of relying on Object.toString() definition. Specified by: toString in class JsonNode · protected ArrayNode _add(JsonNode node) protected ArrayNode _insert(int index, JsonNode node) Overview ·
🌐
Fasterxml
fasterxml.github.io › jackson-core › javadoc › 1.9 › org › codehaus › jackson › node › ArrayNode.html
ArrayNode (Jackson JSON Processor)
Method that will construct an ArrayNode and add it as a field of this ObjectNode, replacing old value, if any.
🌐
Fasterxml
fasterxml.github.io › jackson-databind › javadoc › 2.7 › com › fasterxml › jackson › databind › node › ArrayNode.html
ArrayNode (jackson-databind 2.7.0 API)
If you want valid JSON output (or output formatted using one of other Jackson supported data formats) make sure to use ObjectMapper or ObjectWriter to serialize an instance, for example: String json = objectMapper.writeValueAsString(rootNode); Note: method defined as abstract to ensure all implementation classes explicitly implement method, instead of relying on Object.toString() definition. Specified by: toString in class JsonNode · protected ArrayNode _add(JsonNode node) protected ArrayNode _insert(int index, JsonNode node) Overview ·
Find elsewhere
🌐
TutorialsPoint
tutorialspoint.com › how-to-convert-jsonnode-to-arraynode-using-jackson-api-in-java
How to convert JsonNode to ArrayNode using Jackson API in Java?
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.core.JsonProcessingException; public class JSonNodeToArrayNodeTest { public static void main(String args[]) throws JsonProcessingException { String jsonStr = "{\"Technologies\" : [\"Java\", \"Scala\", \"Python\"]}"; ObjectMapper mapper = new ObjectMapper(); ArrayNode arrayNode = (ArrayNode) mapper.readTree(jsonStr).get("Technologies"); if(arrayNode.isArray()) { for(JsonNode jsonNode : arrayNode) { System.out.println(jsonNode); } } } }
🌐
Baeldung
baeldung.com › home › json › jackson › working with tree model nodes in jackson
Working with Tree Model Nodes in Jackson | Baeldung
January 8, 2024 - This tutorial will focus on working with tree model nodes in Jackson. We’ll use JsonNode for various conversions as well as adding, modifying, and removing nodes.
🌐
Javadoc.io
javadoc.io › doc › com.fasterxml.jackson.core › jackson-databind › latest › com › fasterxml › jackson › databind › node › ArrayNode.html
ArrayNode - jackson-databind 2.22.2 javadoc
Bookmarks · Latest version of com.fasterxml.jackson.core:jackson-databind · https://javadoc.io/doc/com.fasterxml.jackson.core/jackson-databind · Current version 2.22.2 · https://javadoc.io/doc/com.fasterxml.jackson.core/jackson-databind/2.22.2 · package-list path (used for javadoc generation ...
🌐
Jenkov
jenkov.com › tutorials › java-json › jackson-jsonnode.html
Jackson JsonNode
That means, that you cannot actually build an object graph of JsonNode instances directly. Instead, you create an object graph of the JsonNode subclass ObjectNode. Being a subclass of JsonNode you can use the ObjectNode everywhere you can use ...
🌐
Microsoft Learn
learn.microsoft.com › en-us › java › api › com.azure.core.serializer.json.jackson.models.jacksonjsonarray
JacksonJsonArray Class | Microsoft Learn
Creates a new JacksonJsonArray using the provided ArrayNode. ... Adds a JsonNode to the JSON array at the specified index.
🌐
Adobe Developer
developer.adobe.com › experience-manager › reference-materials › 6-5 › javadoc › com › fasterxml › jackson › databind › node › ArrayNode.html
ArrayNode (The Adobe AEM Quickstart and Web Application.)
TreeNode, JsonSerializable, JsonNodeCreator, java.io.Serializable, java.lang.Iterable<JsonNode> public class ArrayNode extends ContainerNode<ArrayNode> implements java.io.Serializable · Node class that represents Arrays mapped from JSON content. Note: class was final temporarily for Jackson 2.2.
🌐
Fasterxml
fasterxml.github.io › jackson-databind › javadoc › 2.7 › com › fasterxml › jackson › databind › JsonNode.html
JsonNode (jackson-databind 2.7.0 API)
Method that can be called on Object nodes, to access a property that has Array value; or if no such property exists, to create, add and return such Array node. If the node method is called on is not Object node, or if property exists and has value that is not Array node, UnsupportedOperati...