快速高效的方式以Java逐行读取大型JSON文件
我的文件中有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"]
然后:
["XYZ",...,"ABC"]
依此类推:’
......
...
["XYZ",...,"ABC"]
我如何读取这样的JSON
文件,我知道它看起来并不完全像JSON
文件,但是我需要以另存为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);
}
}
}
以上是 快速高效的方式以Java逐行读取大型JSON文件 的全部内容, 来源链接: utcz.com/qa/433224.html