如何在JSON对象列表中使用传入的key变量替代硬编码字段进行对象查找?
动态匹配JSON列表中的键值对解决方案
这个需求其实很容易解决,核心就是把硬编码的属性访问改成动态键名访问就行。在Groovy里,从JSON解析出来的对象本质上是Map类型,我们可以用括号访问法来实现动态匹配,替代原来.的硬编码方式。
你只需要把代码里的variable.name == value改成variable[key] == value,就能用传入的key参数来动态匹配对应的属性了。
修改后的完整代码如下:
void searchKeyValueInList(def jsonList, String key, String value) { if(!jsonList) return // 用动态键名替换硬编码的name/label def dashboardVariable = jsonList.find{ variable -> variable[key] == value } if(dashboardVariable){ println "Dashboard variable is: ${dashboardVariable}" } }
额外说明:
- 这种方式适配所有Map类型对象,不管你的JSON键是
name、label还是其他任意字符串,只要传入的key参数和目标键一致就能匹配成功 - 如果JSON对象的键包含特殊字符(比如
user-name、display name),括号访问法依然能正常工作,而.的硬编码方式会直接报错,这也是动态访问的一大优势 - 要是传入的
key在JSON对象中不存在,variable[key]会返回null,这时候就匹配不到任何结果,所以调用方法时要确保key是目标JSON对象中存在的键
内容的提问来源于stack exchange,提问作者Kaliyug Antagonist
相关产品推荐
相关产品推荐

