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

如何从JSON文件中获取指定ID区间的数据(含至末尾)?

获取JSON数组中指定ID范围的数据(或到末尾)的实现方案

当然可行!你只需要先定位到起始ID对应的元素位置,再确定结束位置(要么是目标结束ID的位置,要么是数组最后一个元素),然后遍历这个区间提取数据就行。我来帮你完善代码,同时处理一些边界情况:

核心思路

  1. 遍历JSON数组,找到起始ID对应的元素索引
  2. 找到结束ID对应的元素索引(如果不存在,就用数组最后一个元素的索引)
  3. 从起始索引到结束索引(包含两端),逐个提取元素的value值并转换为float存入列表

完整实现代码(基于org.json库)

List<Float> dataSave = new ArrayList<>();
try {
    JSONObject objectFromFile = ...; // 你的JSON读取逻辑
    JSONArray dataArray = objectFromFile.getJSONArray("data");
    
    // 定义目标ID
    String startId = "dc4607f9-5955-4dd8-8c1a-abd3719edb6f";
    String endId = "c6fb7cd8-381d-93fa-711b-9482ab394ffa";
    
    int startIndex = -1;
    int endIndex = dataArray.length() - 1; // 默认到最后一条
    
    // 第一步:找到起始ID的索引
    for (int i = 0; i < dataArray.length(); i++) {
        JSONObject item = dataArray.getJSONObject(i);
        if (startId.equals(item.getString("ID"))) {
            startIndex = i;
            break;
        }
    }
    
    // 如果起始ID不存在,直接返回空列表或者抛出提示
    if (startIndex == -1) {
        System.out.println("起始ID不存在");
        return;
    }
    
    // 第二步:找到结束ID的索引(如果存在)
    for (int i = startIndex; i < dataArray.length(); i++) {
        JSONObject item = dataArray.getJSONObject(i);
        if (endId.equals(item.getString("ID"))) {
            endIndex = i;
            break;
        }
    }
    
    // 第三步:遍历区间,提取数据
    for (int i = startIndex; i <= endIndex; i++) {
        JSONObject item = dataArray.getJSONObject(i);
        double value = item.getDouble("value");
        dataSave.add((float) value);
    }
    
} catch (JSONException e) {
    e.printStackTrace();
}

关键细节说明

  • 边界处理:如果起始ID不存在,代码会直接提示并终止,避免后续空指针或无效遍历
  • 结束ID容错:如果结束ID不存在,自动取数组最后一条数据,完全符合你的需求
  • 类型转换:先把JSON中的字符串value解析为double,再转成float存入列表,避免直接转换可能出现的格式错误

这样就能精准获取你需要的区间数据啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:47:22