Java读取非固定结构JSON文件如何同时获取字段名与值
Java动态读取非固定结构JSON字段及值的实现方案
不要自行实现逐字符解析逻辑,直接使用工业级成熟JSON解析库即可,推荐使用Jackson,性能高、稳定性强,支持树模型遍历动态结构的JSON,完全满足你获取任意字段名和对应值的需求。
1. 引入依赖
Maven项目中添加Jackson核心依赖:
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.15.2</version> </dependency>
2. 实现代码
核心逻辑是将JSON解析为树模型JsonNode,递归遍历所有节点,同时提取字段名和对应值:
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import java.io.File; import java.io.IOException; import java.util.Iterator; import java.util.Map; public class DynamicJsonReader { // ObjectMapper是线程安全的,全局复用单实例即可,不需要每次创建 private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); public static void main(String[] args) throws IOException { // 读取本地JSON文件 JsonNode rootNode = OBJECT_MAPPER.readTree(new File("你的JSON文件路径.json")); // 递归遍历节点,第一个参数为当前字段的路径前缀,根节点传空即可 traverseJsonNode("", rootNode); } private static void traverseJsonNode(String pathPrefix, JsonNode node) { // 处理对象类型节点,直接获取所有字段名和对应值 if (node.isObject()) { Iterator<Map.Entry<String, JsonNode>> fields = node.fields(); while (fields.hasNext()) { Map.Entry<String, JsonNode> field = fields.next(); String fieldName = field.getKey(); JsonNode valueNode = field.getValue(); // 拼接完整字段路径,不需要的话可以直接用fieldName输出当前层级字段名 String fullFieldName = pathPrefix.isEmpty() ? fieldName : pathPrefix + "." + fieldName; // 基础类型值直接输出文本,复杂类型输出JSON字符串 String value = valueNode.isValueNode() ? valueNode.asText() : valueNode.toString(); System.out.printf("字段名:%s,对应值:%s%n", fullFieldName, value); // 递归遍历子节点 traverseJsonNode(fullFieldName, valueNode); } } // 处理数组类型节点 else if (node.isArray()) { for (int i = 0; i < node.size(); i++) { String arrayItemPrefix = pathPrefix + "[" + i + "]"; traverseJsonNode(arrayItemPrefix, node.get(i)); } } } }
3. 补充说明
- 以上代码适配任意层级的嵌套JSON结构,不管是对象嵌套还是数组嵌套都可以正确识别所有字段
- 如果需要处理GB级超大JSON文件,避免全量加载到内存,可以使用Jackson的流式API
JsonParser逐片段解析,性能依然远高于手动解析字符 - 除Jackson外,也可以使用FastJSON2、Gson等其他JSON库,核心思路都是通过树模型遍历,逻辑完全一致
内容的提问来源于stack exchange,提问作者Piotror
相关产品推荐
相关产品推荐

