java读取json文件需先用io读取为字符串,再用jackson或gson解析为java对象;推荐jackson,支持直接传file解析,需处理异常、编码和路径问题。

Java 读取 JSON 文件,核心是“解析”而非“直接读字符串”。你需要先用 IO 工具读取文件内容为字符串,再用 JSON 解析库(如 Jackson 或 Gson)将字符串转成 Java 对象。
用 Jackson 读取 JSON 文件(推荐)
Jackson 是目前最主流、性能好、功能全的 JSON 处理库。需添加 Maven 依赖:
假设你有一个 user.json 文件内容如下:
"name": "张三",
"age": 28,
"active": true
}
定义对应 Java 类(POJO):
private String name;
private int age;
private boolean active;
// getter / setter 省略(Lombok 可自动生成)
}
读取并解析代码:
ObjectMapper mapper = new ObjectMapper();User user = mapper.readValue(new File("user.json"), User.class);
- 支持直接传
File、InputStream、Path或 JSON 字符串 - 自动处理字段名匹配(大小写敏感,默认按字段名精确匹配;可用
@JsonProperty注解适配不同命名) - 遇到缺失字段或类型不匹配会抛
JsonProcessingException,建议 try-catch
用 Gson 读取 JSON 文件(轻量替代)
如果你项目已用 Gson 或偏好简洁 API,也可选用:
代码示例:
Gson gson = new Gson();String json = Files.readString(Paths.get("user.json"));
User user = gson.fromJson(json, User.class);
-
Files.readString()(Java 11+)比传统FileReader + BufferedReader更简洁 - Gson 默认忽略未知字段;Jackson 默认报错(可用
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)关闭) - 对泛型集合(如
List<user></user>)需用TypeToken显式指定类型
注意事项和常见问题
- 字符编码:确保 JSON 文件保存为 UTF-8(无 BOM),否则中文可能乱码;Jackson/Gson 默认按 UTF-8 解析
-
路径问题:使用相对路径时注意工作目录(IDE 运行时通常是项目根目录);生产环境建议用
Class.getResourceAsStream()加载 classpath 下资源 -
异常处理:JSON 格式错误、字段类型不匹配、空值赋给基本类型等都会导致运行时异常,务必捕获
IOException和具体解析异常 -
大文件慎用:上述方式是“全量加载”,适合中小 JSON;超大 JSON(如 GB 级日志)应改用流式解析(Jackson 的
JsonParser或 Gson 的JsonReader)
一句话总结
选 Jackson 或 Gson → 读文件为字符串或直接传 File → 调用 readValue() 或 fromJson() 绑定到 Java 类 → 注意异常、编码和路径。不复杂但容易忽略细节。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











