Java 中的大型 JSON 文件处理
高效的 json 文件处理在现代应用程序中非常重要。如果 json 文件很大,我们需要妥善处理,以避免堆内存不足错误和大量资源消耗。
gson 是 java 中处理 json 文件的最佳库之一。
它提供线程安全实例来重用同一对象来处理多个请求。
除非有特殊情况,否则它不期望任何注释可用于序列化和反序列化。
提供 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); } </user></boolean>