Java读取本地JSON文件转对象的核心步骤是:先用标准I/O读取文件为字符串,再用Jackson或Gson解析为Java对象;推荐Jackson,需添加jackson-databind依赖,通过ObjectMapper.readValue()直接传File或InputStream,注意编码与异常处理。

Java 读取本地 JSON 文本文件,核心是两步:先用标准 I/O 读取文件内容为字符串,再用 JSON 解析库(如 Jackson 或 Gson)将字符串转为 Java 对象。关键在于选对库、处理好编码和异常。
用 Jackson 读取 JSON 文件(推荐)
Jackson 是 Java 生态最常用、性能好、功能全的 JSON 库。需添加 Maven 依赖:
<dependency><groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.15.3</version>
</dependency>
假设有一个 user.json 文件内容如下:
{"name": "张三",
"age": 28,
"active": true
}
对应 Java 类:
立即学习“Java免费学习笔记(深入)”;
public class User {
public String name;
public int age;
public boolean active;
// 构造函数、getter/setter 可选(Jackson 默认支持 public 字段)
}
读取并解析代码:
ObjectMapper mapper = new ObjectMapper();
try {
User user = mapper.readValue(Paths.get("user.json").toFile(), User.class);
System.out.println(user.name + ", " + user.age);
} catch (IOException e) {
e.printStackTrace();
}
注意:
• 默认使用 UTF-8 编码,若文件是 GBK 等编码,需显式指定:mapper.readValue(new InputStreamReader(new FileInputStream("user.json"), "GBK"), User.class)
• 支持直接读取为 Map 或 JsonNode,适合结构不确定的 JSON。
用 Gson 读取 JSON 文件
Google 的 Gson 更轻量,API 简洁。添加依赖:
<dependency><groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.10.1</version>
</dependency>
读取示例:
Gson gson = new Gson();
try (Reader reader = Files.newBufferedReader(Paths.get("user.json"), StandardCharsets.UTF_8)) {
User user = gson.fromJson(reader, User.class);
System.out.println(user.name);
} catch (IOException e) {
e.printStackTrace();
}
说明:
• 必须显式传入 StandardCharsets.UTF_8,否则可能乱码;
• Gson 不支持直接传 File 对象,必须包装为 Reader;
• 若字段名与 JSON 键不一致,可用 @SerializedName("user_name") 注解映射。
纯 JDK 方式(不推荐,仅作了解)
Java 11+ 可用 Files.readString() 读取内容,但**JDK 自带无 JSON 解析器**,仍需第三方库解析字符串:
String json = Files.readString(Paths.get("user.json"), StandardCharsets.UTF_8);
User user = mapper.readValue(json, User.class); // 还是要用 Jackson/Gson
所以“纯 JDK”只解决读文件,不解 JSON——真正解析离不开 Jackson 或 Gson。
常见问题提醒
- 文件路径错误:用
Paths.get("user.json")是相对路径(以项目根目录或运行目录为基准),建议打印Paths.get("user.json").toAbsolutePath()确认位置 - JSON 格式错误:会抛出
JsonProcessingException(Jackson)或JsonSyntaxException(Gson),检查文件是否有多余逗号、单引号、中文标点 - 字段类型不匹配:比如 JSON 中
"age": "28"(字符串),但 Java 字段是int,Jackson 默认会报错;可配置mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true)或使用自定义反序列化器


















