
高效的 json 文件处理在现代应用程序中非常重要。如果 json 文件很大,我们需要妥善处理,以避免堆内存不足错误和大量资源消耗。
gson 是 java 中处理 json 文件的最佳库之一。
它提供线程安全实例来重用同一对象来处理多个请求。
-
除非有特殊情况,否则它不期望任何注释可用于序列化和反序列化。
立即学习“Java免费学习笔记(深入)”;
提供 tojson() 和 fromjson() 方法用于序列化和反序列化。
它提供使用流阅读器读取内容的支持。
下面是使用 java 流读取器读取文件并转换为 java 对象的代码片段。我正在对每 100 条记录应用我的业务逻辑。
假设 json 文件具有如下所示的数据数组。
[
{
“id”:1,
“名字”:“艾米丽”,
“姓氏”:“约翰逊”
}
]
java 代码
private Optional<Boolean> readFile(String path) {
try (InputStream inputStream = Files.newInputStream(Path.of(path));
JsonReader reader = new JsonReader(new InputStreamReader(inputStream))) {
Instant start = Instant.now();
reader.beginArray();
List<User> users = new ArrayList<>();
while (reader.hasNext()) {
users.add(gson.fromJson(reader, User.class));
if (users.size() >= 100) {
//Initiate your records processing
//You can consider processing it async way handling failure scenarios properly
users.clear();
}
}
reader.endArray();
LOGGER.info("Total time taken to process file:{}, Duration:{} (millis)", path, Duration.between(start, Instant.now()).toMillis());
} catch (Exception e) {
LOGGER.error("", e);
return Optional.of(false);
}
return Optional.of(true);
}










