如何用Groovy提取JSON中动态数字键下的title字段?
提取动态Key下的JSON字段值
优先推荐:操作解析后的Map对象
你的代码无效是因为pages是Map结构(键为动态数字,值是包含title的对象),Groovy里不能用.(*)遍历Map的键。正确做法是直接获取Map的所有值,再提取title:
如果pages里只会有一个动态Key:
def title = ParsedResponse.query.pages.values().first().title
如果pages可能存在多个动态Key,需要批量提取title:
def allTitles = ParsedResponse.query.pages.values().collect { it.title } // 按需取对应位置的title,比如第一个或遍历处理
备选方案:正则匹配(不推荐)
如果必须用正则处理原始JSON字符串(注意是未解析的原始响应文本,不是已解析的对象),可以用如下方式匹配title值:
// 假设rawResponse是接口返回的原始JSON字符串 def matcher = (rawResponse =~ /"title"\s*:\s*"([^"]+)"/) if (matcher.find()) { def title = matcher.group(1) }
但正则处理JSON风险很高,一旦JSON结构微调(比如字段顺序变化、出现转义字符)就会失效,所以优先用解析后的Map操作。
内容的提问来源于stack exchange,提问作者Juan Arredondo Andrade
相关产品推荐
相关产品推荐

