ObjectMapper的作用
1.背景: 当我们调用API
的时候捕获的数据,往往需要结合文档所定义的类进行转换,也就是Java
对象与JSON
字符串之间的转换
2.作用: ObjectMapper
是 Jackson
库中的一个关键类,它的作用是将 JSON
数据和 Java
对象之间进行相互转换。
- **将 Java对象转换为 JSON 字符串:**通过
writeValueAsString()
方法,可以将Java
对象转换为JSON
格式的字符串,便于传输和存储。 - **将 JSON 字符串转换为 Java 对象:**通过
readValue()
方法,可以将JSON
格式的字符串转换为相应的Java
对象,方便在代码中进行处理和操作。
3.例子:
ObjectMapper
将JSON
字符串转为树形数据结构对象JsonNode
(目的是访问和操作JSON
数据的各个部分,以便于映射到Java
对象):
ObjectMapper objectMapper = new ObjectMapper();
JsonNode root = objectMapper.readTree(JsonStr);
我们的目的就是获取steps
下的每一个元素
过滤树得到steps
下的JSON
数据后,调用elements
方法得到元素迭代器
JsonNode pathsNode = root.path("route").path("paths").get(0).path("steps");
Iterator<JsonNode> stepsIterator = pathsNode.elements();
全部代码:
public static Map<String, Steps> parseSteps(String json) throws IOException {
Map<String, Steps> stepsMap = new HashMap<>();
ObjectMapper objectMapper = new ObjectMapper();
JsonNode root = objectMapper.readTree(json);
JsonNode pathsNode = root.path("route").path("paths").get(0).path("steps");
Iterator<JsonNode> stepsIterator = pathsNode.elements();
int stepCount = 1;
while (stepsIterator.hasNext()) {
JsonNode stepNode = stepsIterator.next();
Steps steps = parseStep(stepNode);
stepsMap.put(String.valueOf(stepCount), steps);
stepCount++;
}
return stepsMap;
}