Java如何遍历嵌套JSON并提取各属性对应的type嵌套值
Java遍历嵌套JSON提取type字段解决方案
方案1:基于现有代码修改
你现有代码中读取到的Map的value本身就是嵌套的Map结构,直接强转后提取type字段即可,修改遍历部分代码如下:
map.forEach((key, value) -> { // 把value强转为嵌套的Map结构 Map<String, Object> nestedMap = (Map<String, Object>) value; String typeValue = (String) nestedMap.get("type"); System.out.println(key + "对应的type值为:" + typeValue); });
方案2:更稳妥的JsonNode实现(推荐)
可以直接用ObjectMapper读取文件为JsonNode,无需额外的类型转换,代码更简洁安全,完整实现代码如下:
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import java.io.File; public class JSONReadExample { public static void main(String[] args) throws Exception { ObjectMapper objectMapper = new ObjectMapper(); // 直接读取文件解析为JsonNode JsonNode rootNode = objectMapper.readTree(new File("myFile.json")); // 遍历根节点的所有属性 rootNode.fields().forEachRemaining(entry -> { String propKey = entry.getKey(); JsonNode nestedNode = entry.getValue(); // 直接取嵌套的type字段值 String typeValue = nestedNode.get("type").asText(); System.out.println(propKey + "对应的type值为:" + typeValue); }); } }
注意事项
- 若存在部分属性缺少
type字段的场景,可先做非空判断再取值,避免空指针异常 - 该方案依赖Jackson的databind包,需确保项目中已引入对应依赖
内容的提问来源于stack exchange,提问作者st123
相关产品推荐
相关产品推荐

