在groovy中我有一个哈希映射列表。
如果我想在此地图中搜索/获取一个子类型和域名组合的记录,我该怎么办?附:地图中可能会有更多属性,但为了简单起见,我没有将它们包括在内。
[{
"subtype__c": "SUBTYPE_ONE",
"domain__c": "DOMAIN_ONE"
}, {
"subtype__c": "SUBTYPE_TWO",
"domain__c": "DOMAIN_TWO"
}, {
"subtype__c": "SUBTYPE_THREE",
"domain__c": "DOMAIN_THREE"
}, {
"subtype__c": "SUBTYPE_FOUR",
"domain__c": "DOMAIN_FOUR"
}]
答案 0 :(得分:2)
您可以执行以下操作:
JsonSlurper
find
搜索def filterCriteria = [subtype__c: 'SUBTYPE_ONE', domain__c: 'DOMAIN_ONE']
def jsonString = """[{
"subtype__c": "SUBTYPE_ONE",
"domain__c": "DOMAIN_ONE"
}, {
"subtype__c": "SUBTYPE_TWO",
"domain__c": "DOMAIN_TWO"
}, {
"subtype__c": "SUBTYPE_THREE",
"domain__c": "DOMAIN_THREE"
}, {
"subtype__c": "SUBTYPE_FOUR",
"domain__c": "DOMAIN_FOUR"
}]"""
def json = new groovy.json.JsonSlurper().parseText(jsonString)
println json.find{it == filterCriteria}
您可以在线快速尝试 demo
答案 1 :(得分:0)
您可以尝试以下代码。
List<Map<String, String>> list = [
["subtype": "s1", "domain": "d1"],
["subtype": "s2", "domain": "d2"],
]
list.find({ Map<String, String> map -> map["subtype"] == "s1" && map["domain"] == "d1"})
如果有可能找到多个这样的地图,那么使用&#34; findAll&#34;代替。
List<Map<String, String>> found = list.findAll({ Map<String, String> map -> map["subtype"] == "s1" && map["domain"] == "d1"})