Jackson library
In the Jackson library, the JsonNode
class represents a node in a JSON tree. To extract a list (e.g., an array) from a JsonNode
, you can use methods like get
, elements()
, or findValues
. Here's how you can achieve this:
Example: Extracting a List from JsonNode
Given JSON:
{
"names": ["Alice", "Bob", "Charlie"]
}
Java Code:
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class JsonNodeExample {
public static void main(String[] args) throws Exception {
String jsonString = "{ \"names\": [\"Alice\", \"Bob\", \"Charlie\"] }";
// Parse JSON
ObjectMapper mapper = new ObjectMapper();
JsonNode rootNode = mapper.readTree(jsonString);
// Extract the "names" array as a JsonNode
JsonNode namesNode = rootNode.get("names");
// Convert JsonNode array to a List
List<String> names = new ArrayList<>();
if (namesNode.isArray()) {
for (JsonNode nameNode : namesNode) {
names.add(nameNode.asText());
}
}
// Print the list
System.out.println(names); // Output: [Alice, Bob, Charlie]
}
}
Explanation
- Parse JSON: Use
ObjectMapper.readTree
to parse the JSON string into aJsonNode
object. - Access Array Node: Use
rootNode.get("names")
to get theJsonNode
representing the array. - Iterate and Convert: Check if the node is an array using
isArray()
. Iterate over its elements and convert each to the desired type (String
in this case) using methods likeasText()
.
Notes
- Use
asText()
,asInt()
, orasDouble()
for type conversion. - Always check if the node is of the expected type (
isArray
,isTextual
, etc.) to avoid runtime issues.
댓글
댓글 쓰기