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

如何遍历API返回JSON的items数组并逐个读取name字段?

如何遍历JSON数组并读取指定字段?

看起来你已经成功解析了API返回的JSON并拿到了items数组,但直接访问items.name肯定会报错——因为items是一个数组集合,不是单个包含name属性的对象呀!

针对你用的这种动态JSON解析方式(从Json.parse().asObject()的写法来看,应该是Jodd Json库),给你两种可行的遍历方式,帮你逐个取出每个item的name字段:

方式1:普通for循环遍历数组

利用数组的size()方法获取长度,逐个取出元素转为JsonObject后提取name:

JsonObject obj = Json.parse(jsonString).asObject();
JsonArray items = obj.get("items").asArray();

for (int i = 0; i < items.size(); i++) {
    // 把数组里的每个元素转成JsonObject
    JsonObject itemObj = items.get(i).asObject();
    // 提取name字段并打印
    String itemName = itemObj.get("name").asString();
    System.out.println(itemName);
}

方式2:增强for循环遍历

Jodd Json的JsonArray实现了Iterable接口,所以可以用更简洁的增强for循环:

JsonObject obj = Json.parse(jsonString).asObject();
JsonArray items = obj.get("items").asArray();

for (JsonValue value : items) {
    JsonObject itemObj = value.asObject();
    String itemName = itemObj.get("name").asString();
    System.out.println(itemName);
}

为什么之前的写法会报错?

items是数组类型,它本身没有name属性,只有数组里的每一个元素才是包含id、name等字段的对象。必须先遍历数组中的每个元素,再从单个元素对象里提取name。

如果后续需要频繁处理这类JSON,也可以考虑用实体类映射的方式(比如Gson、Jackson库),先定义对应结构的Java类,直接把JSON转成对象,操作字段会更方便,示例如下(以Gson为例):

// 定义对应JSON结构的实体类
class ApiResult {
    private int count;
    private int limit;
    private int totalResults;
    private boolean hasMore;
    private List<Item> items;
    
    // 生成getter方法
    public List<Item> getItems() {
        return items;
    }
}

class Item {
    private String id;
    private String name;
    private String version;
    private String status;
    
    // 生成getter方法
    public String getName() {
        return name;
    }
}

// 解析并遍历
Gson gson = new Gson();
ApiResult result = gson.fromJson(jsonString, ApiResult.class);
for (Item item : result.getItems()) {
    System.out.println(item.getName());
}

这种方式的代码可读性和维护性更好,适合处理复杂的JSON结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 11:02:48