有一个简单的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 < 长度; i++) {
double start_time = JsonPath.read(response, "$.result["+i+"].startTime");
ArrayList<Integer> f1= JsonPath.read(response, "$.result["+i+"].f1");
//...其他事情
}
有没有办法优化它?
可以像这样一次性将整个JSON解析为HASHMap:
ArrayList<HashMap> json= JsonPath.read(response, "$.result");
然后我们可以简单地调用 get(i) 来访问循环中的特定项目:
double start_time = (double) json.get(i).get("startTime");
动力节点在线课程涵盖零基础入门,高级进阶,在职提升三大主力内容,覆盖Java从入门到就业提升的全体系学习内容。全部Java视频教程免费观看,相关学习资料免费下载!对于火爆技术,每周一定时更新!如果想了解更多相关技术,可以到动力节点在线免费观看JSONPath视频教程哦!
代码小兵64503-29 11:46
代码小兵87208-06 11:36
代码小兵34507-29 13:19