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

Rest Assured Java如何迭代JSON响应所有父子节点完成正确性校验

全层级JSON节点遍历实现方案

你现有代码仅遍历了根节点的直接子节点,未对对象、数组类型的子节点做递归处理,因此无法获取深层节点。可以通过递归方法兼容所有节点类型的遍历,具体实现如下:

1. 新增递归遍历方法

private void traverseJsonNode(String parentPath, JsonNode node) {
    // 拼接当前节点完整路径,根节点直接取字段名
    String currentPath = parentPath.isEmpty() ? "" : parentPath + ".";
    
    // 处理对象类型节点
    if (node.isObject()) {
        Iterator<String> fieldNames = node.fieldNames();
        while (fieldNames.hasNext()) {
            String fieldName = fieldNames.next();
            JsonNode childNode = node.get(fieldName);
            System.out.println("节点路径:" + currentPath + fieldName);
            System.out.println("节点值:" + childNode);
            // 递归遍历子节点
            traverseJsonNode(currentPath + fieldName, childNode);
        }
    }
    // 处理数组类型节点
    else if (node.isArray()) {
        for (int i = 0; i < node.size(); i++) {
            JsonNode arrayItem = node.get(i);
            String arrayPath = parentPath + "[" + i + "]";
            System.out.println("节点路径:" + arrayPath);
            System.out.println("节点值:" + arrayItem);
            // 递归遍历数组元素
            traverseJsonNode(arrayPath, arrayItem);
        }
    }
    // 处理值类型节点(字符串、数字、布尔、空值等叶子节点)
    else {
        // 此处可添加你的节点值校验逻辑
        // 示例:org.testng.Assert.assertEquals(node.asText(), 预期值);
    }
}

2. 替换原有遍历逻辑

你原有代码中遍历第一层节点的while循环,直接替换为递归方法调用即可:

ObjectMapper objectMapper = new ObjectMapper();
// 注意修正你原有代码里的拼写错误:reponse → response
JsonNode jsonNode = objectMapper.readTree(response.asString());
// 调用递归方法,根节点初始路径为空
traverseJsonNode("", jsonNode);

效果示例

针对你给出的JSON结构,遍历后会输出所有层级的节点路径和值:

节点路径:metadata
节点值:{"msgLst":[{"code":"00","text":"SUCCESS"}]}
节点路径:metadata.msgLst
节点值:[{"code":"00","text":"SUCCESS"}]
节点路径:metadata.msgLst[0]
节点值:{"code":"00","text":"SUCCESS"}
节点路径:metadata.msgLst[0].code
节点值:"00"
节点路径:metadata.msgLst[0].text
节点值:"SUCCESS"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 02:39:03