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

如何用RestAssured的JsonPath从JSON中提取display_name列表?

解决JsonPath提取动态键下display_name的问题

你的问题出在JsonPath路径没有正确处理data是数组的情况。原JSON中data是数组结构,必须先遍历数组内的元素,再匹配types下的所有动态键。

修正后的JsonPath写法

直接给路径加上数组通配符[*]来遍历data数组即可:

JsonPath json = response.jsonPath();
List<String> list = json.getList("data[*].types.*.display_name");

路径各部分含义:

  • data[*]:遍历data数组中的每一个元素
  • types.*:遍历当前元素下types对象的所有键值对
  • .display_name:提取每个键值对中的display_name字段

备选方案(手动遍历)

如果需要更灵活的自定义处理逻辑,也可以手动遍历数据结构:

List<Map<String, Object>> dataList = json.getList("data");
List<String> displayNames = new ArrayList<>();
for (Map<String, Object> dataItem : dataList) {
    // 取出types对象并做类型转换
    Map<String, Map<String, String>> typesMap = (Map<String, Map<String, String>>) dataItem.get("types");
    // 遍历types下所有值,提取display_name
    for (Map<String, String> typeDetail : typesMap.values()) {
        displayNames.add(typeDetail.get("display_name"));
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 17:52:02