【发布时间】:2019-03-26 21:32:28
【问题描述】:
我有一个简单的 Java 应用程序,它需要遍历一个大的 JSON 数组(大约有 20K 项),并且在每个数组中,我解析一个子数组。每个项目如下所示:
{"index":0,"f1":[2,16,16,16,16,16,32,16],"f2":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"startTime":0.0}
我正在使用JSONPath 来迭代每个项目。我所做的是首先读取长度,然后简单地遍历整个数组。但它非常慢(例如,每秒 1 个项目)。
int length = JsonPath.read(response, "$.result.length()");
for (int i = 0; i < length; i++) {
double start_time = JsonPath.read(response, "$.result["+i+"].startTime");
ArrayList<Integer> f1= JsonPath.read(response, "$.result["+i+"].f1");
//...other things
}
有办法优化吗?
【问题讨论】:
-
是的 - 首先将您的 JSON 文件解析为数据结构一次,然后您就可以访问该数据结构。您当前所做的是每次从中检索值时解析 JSON,正如您所注意到的,这非常非常慢。见stackoverflow.com/questions/2591098/how-to-parse-json-in-java
-
你能在
JSONPath上用sn-ps详细说明吗?
标签: java arrays json parsing jsonpath