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

如何获取JSON数组内对象数量及解决RestAssured遍历views数组问题

嘿,我来帮你搞定这两个JSON相关的问题,一个是获取数组对象数量,另一个是你在RestAssured里遇到的遍历问题:

问题1:如何获取JSON数组中包含的JSON对象的数量

这个得看你用什么工具处理JSON,我给你说几种常见场景的做法:

  • 用RestAssured的JsonPath处理:
    如果JSON数组是顶层结构,或者能通过路径定位到它,直接用getList()方法获取数组,再调用size()就行。比如:

    // 假设顶层就是数组
    int totalCount = response.jsonPath().getList("").size();
    // 如果是嵌套数组,比如你示例里的views
    int viewsCount = response.jsonPath().getList("[0].views").size();
    
  • 用Jackson库处理:
    把JSON字符串解析成JsonNode,判断它是ArrayNode后调用size()方法:

    ObjectMapper mapper = new ObjectMapper();
    JsonNode rootNode = mapper.readTree(jsonString);
    if (rootNode.isArray()) {
        int count = ((ArrayNode) rootNode).size();
        System.out.println("数组内对象数量:" + count);
    }
    
  • 原生JavaScript(前端场景):
    直接访问数组的length属性即可:

    const jsonArray = [{...}, {...}];
    console.log("对象数量:", jsonArray.length);
    
问题2:RestAssured中遍历views数组时size返回1的问题

先帮你分析下原因:看你给出的JSON响应示例,最外层是一个包含单个对象的数组,这个对象里才嵌套了views数组。你现在的代码response.jsonPath().get("views")会提取顶层数组中每个对象的views属性,所以得到的是一个List,里面的元素就是那个views数组本身——所以这个外层List的size自然是1,而不是views数组里的对象数量。

正确的处理方式

你需要精准定位到views数组本身,修改代码如下:

Response response = RestAssured.given().when().get(getURL);
// 定位到顶层第一个对象里的views数组
ArrayList<Map<String, Object>> viewsList = response.jsonPath().getList("[0].views");
// 现在这个size就是views里的对象数量了
System.out.println("views数组对象数量:" + viewsList.size());

// 遍历views数组内的对象
for (Map<String, Object> view : viewsList) {
    String name = (String) view.get("name");
    Integer displayOrder = (Integer) view.get("displayOrder");
    // 处理每个view对象的逻辑
    System.out.println("View名称:" + name + ",排序:" + displayOrder);
}

再确认下你的JSON响应结构(格式化后更清晰):

[{
gameIfd: 2018916,
gameIdGlobal: 1948141,
views: [
{ name: "Preview", displayOrder: 1, groups: [], actions: [], localizedName: {} },
{ name: "Thumbnail", ... }
]
}]

最外层是数组,索引0的元素是包含views的对象,所以路径[0].views才能直接拿到你要遍历的目标数组。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:09:35