快速高效的方式以Java逐行读取大型JSON文件

问题描述

您可以使用JSON Processing 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);
         }
     }
}

解决方法

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

JSON 文件看起来像:

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

我想JSON逐行读取此文件为:

首先阅读:

["XYZ","ABC"]

然后:

["XYZ","ABC"]

依此类推:’

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

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

猜你在找的技术问答相关文章

如何检查配对的蓝牙设备是打印机还是扫描仪(Android)
是否允许实体正文进行HTTP DELETE请求?
如何将ZipInputStream转换为InputStream?
java.util.logging Java 8中的变量
PowerMockito.doReturn返回null
Java中的RESTful调用
Swing / Java:如何正确使用getText和setText字符串
特殊字符和重音字符
Android Studio中的ndk.dir错误
错误“找不到主类”