在 Java 中逐行读取大型 JSON 文件的快速高效方法

2023-12-03

我有 1 亿条记录JSON文件,需要一种高效且最快的方法来读取数组的数组JSON文件输入java.

JSON文件看起来像:

[["XYZ",...,"ABC"],["XYZ",...,"ABC"],["XYZ",...,"ABC"],...,["XYZ",...,"ABC"],
 ["XYZ",...,"ABC"],["XYZ",...,"ABC"],["XYZ",...,"ABC"],...,["XYZ",...,"ABC"],
 ...
 ...
 ...
 ,["XYZ",...,"ABC"],["XYZ",...,"ABC"],["XYZ",...,"ABC"]]

我想读这个JSON逐行文件为:

首先阅读:

["XYZ",...,"ABC"]

then:

["XYZ",...,"ABC"]

so on:'

...
...
...
["XYZ",...,"ABC"]

我如何阅读JSON像这样的文件,我知道它并不完全看起来像JSON文件,但我需要以这种格式读取此文件,并将其另存为 .JSON


您可以使用JSON 处理 API (JSR 353),以流式处理您的数据:

import javax.json.Json;
import javax.json.stream.JsonParser;

...

String dataPath = "data.json";

try(JsonParser parser = Json.createParser(new FileReader(dataPath))) {
     List<String> row = new ArrayList<>();

     while(parser.hasNext()) {
         JsonParser.Event event = parser.next();
         switch(event) {
             case START_ARRAY:
                 continue;
             case VALUE_STRING:
                 row.add(parser.getString());
                 break;
             case END_ARRAY:
                 if(!row.isEmpty()) {
                     //Do something with the current row of data 
                     System.out.println(row);

                     //Reset it (prepare for the new row) 
                     row.clear();
                 }
                 break;
             default:
                 throw new IllegalStateException("Unexpected JSON event: " + event);
         }
     }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Java 中逐行读取大型 JSON 文件的快速高效方法 的相关文章

随机推荐

  • 詹金斯奴隶中的“mvn:未找到”

    我有 Jenkins Slave 安装了 Java 和 Maven 环境是 Debian 我可以在控制台中运行 java version 和 mvn version 命令 但是当我尝试在 Jenkins 作业中执行 shell 命令时 我收
  • 如何将图像和文本垂直居中对齐?

    我在顶部有一个 DIV 和一些锚点 第一个是徽标样式 其余的是文本 我设置的样式如下 div nav top height 120px vertical align middle a nav logo background no repea
  • QMediaPlayer。如何播放带有多个音频的视频?

    有一个带有两个音轨的视频文件 Duration 01 05 09 12 start 0 000000 bitrate 2781 kb s Stream 0 0 Video mpeg4 Advanced Simple Profile XVID
  • 如果我睡10毫秒。我需要增加什么才能获得第二个?

    即我正在使用std this thread sleep for std chrono milliseconds 10 在程序循环中 如果我有一个变量在此循环中递增以显示经过的秒数 我需要递增什么 i e float x 0 对于每个步骤 x
  • 使用shiny将server.R中读取的数据传递到ui.R中

    In ui R 我首先读取了固定的样本数据 datT2 lt fread paste0 data 30062019KRB csv header TRUE sep stringsAsFactors FALSE encoding UTF 8 提
  • ggplot2 为平淡的 altman 图中的每个面添加几何线

    我有以下数据框 structure list Lightbox c 84L 67L 80L 63L 76L 66L 79L 81L 77L 82L 84L 67L 80L 63L 76L 66L 79L 81L 77L 82L 84L 67
  • jQuery UI 对话框定位

    我正在尝试使用jQuery 对话框 UI库 以便在将鼠标悬停在某些文本上时将对话框放置在其旁边 jQuery 对话框采用一个位置参数 该参数是从当前视口的左上角开始测量的 换句话说 0 0 将始终将其放在浏览器窗口的左上角 无论您当前滚动到
  • 获取连接表列的不同总和

    我在这里遇到问题 我希望有一个简单的解决方案 我会尝试使这尽可能简单 门票属于与会者 Example 得到结果没有子查询 你必须求助于高级窗口函数技巧 SELECT sum count OVER AS tickets count sum m
  • 合并重叠区间的算法

    我一直在寻找一种有效的算法来合并动态间隔数组上的重叠间隔 例如 开始时间 结束时间 明智的 1 2 4 8 3 10 becomes 1 2 3 10 合并后 因为 4 8 和 3 10 重叠 重叠意味着两个间隔的任何部分共享相同的时刻 我
  • 将sourcesJar任务添加到自定义Gradle插件

    我的公司最近为普通配置 存储库 跨项目的常见依赖项等 编写了 gradle 插件 总的来说 这极大地简化了我们的构建过程 并发现了项目之间的一些不一致之处 我们最近尝试添加一个sourcesJar任务到插件 但它不起作用 这是损坏的插件 p
  • 同一内存地址有两个不同的值

    Code include
  • ts:“Props”可以用任意类型实例化,该类型可能与其他类型无关

    const withFirebase
  • 如何在AWS lex中从意图A调用意图B? [复制]

    这个问题在这里已经有答案了 我正在使用 aws lex 我有一个意图 A 我给它起了个名字welcomeMsg 我想打电话给另一个人intent B from intent A 欢迎msg intent A 它会说 gt Hi I am a
  • python 库中的“randrange() 的非整数参数 1”

    我使用随机数生成器生成 5 到 10 之间的随机数 能不能这么难 我之前在代码中使用过它 2000 行代码 对于这里来说太多了 并且没有发生编码错误 我的代码对于我的游戏来说只是复活节彩蛋 但它破坏了我的所有代码 def slowp t f
  • AngularJS 和 Express Routing 问题

    我正在使用 AngularJS 和 ExpressJS 并且遇到路由问题 我看到了很多其他帖子 但这些解决方案似乎都不起作用 这是我在 Express 中的路线 module exports function app auth Api ro
  • R 如何在不知道长度的情况下创建 for 循环?

    目前在这方面site我正在抓取镜头图表信息 为了抓取信息 我需要为有多少个镜头创建一个 for 循环 我通过单击 球队统计数据 并查找投篮尝试次数来查找投篮次数 我想做适当的for loop无需找出镜头的数量 我目前正在做的事情 shotc
  • 更新第一行mysql php

    我正在尝试更新数据库中的第一行 我用Limit 1仅更新第一行但什么也没有发生 肯定有匹配的行 但数据库中没有任何变化 这是代码 foreach player fromsite as match player in game querytw
  • loadNibNamed 方法太慢 - 如何使其更快?

    我有一个滚动视图 其中包含大约 40 50 个不同类型的对象 对象的类型是根据对象位置的函数定义的 例如 如果是滚动视图中的第 5 个对象 gt 是 Object1 如果是滚动视图中的第 11 个对象 gt 则是 Object2 类型等 使
  • Python Popen 无法在 Windows PowerShell 中使用正确的编码

    我正在 Windows PowerShell 中运行 Python 脚本 该脚本应使用 Popen 运行另一个程序 然后通过管道传输该程序 实际上是 Mercurial 的输出以在我的脚本中使用 当我尝试在 PowerShell 中执行脚本
  • 在 Java 中逐行读取大型 JSON 文件的快速高效方法

    我有 1 亿条记录JSON文件 需要一种高效且最快的方法来读取数组的数组JSON文件输入java JSON文件看起来像 XYZ ABC XYZ ABC XYZ ABC XYZ ABC XYZ ABC XYZ ABC XYZ ABC XYZ