Need to extract data from a JSON string in Java? With Jackson’s JsonNode
and ObjectMapper
, it’s a breeze. Here's how to parse simple, nested, and array-based JSON using JsonNode
.
✅ 1. Add Jackson Dependency
Add this to your pom.xml
:
xml
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.0</version> <!-- Or latest -->
</dependency>
📦 2. Parse Simple JSON String
java
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JsonNodeExample {
public static void main(String[] args) {
String jsonString = "{\"name\":\"John\",\"age\":30,\"city\":\"New York\"}";
try {
ObjectMapper objectMapper = new ObjectMapper();
JsonNode jsonNode = objectMapper.readTree(jsonString);
String name = jsonNode.get("name").asText();
int age = jsonNode.get("age").asInt();
String city = jsonNode.get("city").asText();
System.out.println("Name: " + name);
System.out.println("Age: " + age);
System.out.println("City: " + city);
} catch (Exception e) {
e.printStackTrace();
}
}
}
🌐 3. Handle Nested JSON
java
String nestedJson = "{\"person\":{\"name\":\"John\",\"age\":30,\"address\":{\"city\":\"New York\",\"zip\":\"10001\"}}}";
ObjectMapper mapper = new ObjectMapper();
JsonNode rootNode = mapper.readTree(nestedJson);
JsonNode personNode = rootNode.get("person");
String name = personNode.get("name").asText();
int age = personNode.get("age").asInt();
String city = personNode.get("address").get("city").asText();
String zip = personNode.get("address").get("zip").asText();
🔁 4. Parse JSON Array and Get First Item
java
String jsonArray = "[{\"name\":\"John\",\"age\":30},{\"name\":\"Jane\",\"age\":25}]";
ObjectMapper mapper = new ObjectMapper();
JsonNode arrayNode = mapper.readTree(jsonArray);
if (arrayNode.isArray()) {
Iterator<JsonNode> itr = arrayNode.iterator();
if (itr.hasNext()) {
JsonNode firstItem = itr.next();
String name = firstItem.get("name").asText();
int age = firstItem.get("age").asInt();
System.out.println("First item - Name: " + name + ", Age: " + age);
}
}
📝 Summary
TaskHowParse JSON stringobjectMapper.readTree(jsonString)
Access simple fieldjsonNode.get("key").asText()/asInt()
Access nested fieldjsonNode.get("parent").get("child")
Handle arrayif (jsonNode.isArray())
+ iterate using .iterator()
Get first item from arrayiterator.hasNext()
+ iterator.next()