You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java解析JSON提取rating字段存入ArrayList并排序的实现方法

实现思路

你的现有代码仅遍历了JSON最外层的键,而目标rating字段嵌套在reviews对应的数组元素中,正确提取逻辑如下:

  • 从解析得到的顶层JSONObject中,直接获取reviews键对应的JSONArray对象
  • 遍历JSONArray中的每一个元素,将其强转为JSONObject类型
  • 从每个子JSONObject中提取rating字段的值,存入ArrayList
  • 最后调用排序方法完成排序
循环方案选择

两种方式都可以实现需求:

  • 如果仅做提取操作,for each循环代码更简洁,可读性更高,优先选择
  • 如果遍历过程中需要删除元素,再使用Iterator
    你当前的场景直接用for each循环即可。
完整代码示例

这里基于你使用的json-simple库编写,直接替换你的原有逻辑即可:

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Collections;

public class GetPair {
    public static void main(String[] args) throws Exception {
        ArrayList<Integer> ratingList = new ArrayList<>();
        // 解析JSON文件
        Object obj = new JSONParser().parse(new FileReader("C:\\Users\\User\\eclipse-workspace\\Task\\files\\reviews.json"));
        JSONObject topJson = (JSONObject) obj;
        // 获取reviews数组
        JSONArray reviewsArr = (JSONArray) topJson.get("reviews");
        // 遍历数组提取rating
        for (Object reviewObj : reviewsArr) {
            JSONObject reviewJson = (JSONObject) reviewObj;
            // json-simple默认数值解析为Long,手动转为Integer
            Integer rating = ((Long) reviewJson.get("rating")).intValue();
            ratingList.add(rating);
        }
        // 升序排序,需要降序可额外调用Collections.reverse(ratingList)
        Collections.sort(ratingList);
        // 输出验证结果
        System.out.println("排序后的rating列表:" + ratingList);
    }
}

内容的提问来源于stack exchange,提问作者Ana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 15:24:02