动力节点首页 全国咨询热线:400-8080-105

绑定手机号,登录
手机号

验证码

微信登录
手机号登录
手机号

验证码

30天自动登录
微信登录与注册
微信扫码登录与注册

扫码关注微信公众号完成登录与注册
手机号登录
首页 > 文章

使用JSONPath遍历大型JSON数组

07-29 13:24 435浏览
举报 T字号
  • 大字
  • 中字
  • 小字

有一个简单的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视频教程哦!

0人推荐
共同学习,写下你的评论
0条评论
代码小兵124
程序员代码小兵124

99篇文章贡献336699字

相关课程 更多>

作者相关文章更多>

推荐相关文章更多>

Java初学者学习方法

代码小兵64503-29 11:46

两道经典算法问题

代码小兵51603-29 13:18

Java中模拟高并发的方法

代码小兵87208-06 11:36

Java程序员必备的一些流程图

代码小兵64503-29 15:27

Java接口限流的实现方法

代码小兵57603-29 17:52

发评论

举报

0/150

取消