使用groovy通过Json响应的子子值获取父元素的id

问题描述 投票:0回答:1

我有以下groovy脚本来从响应中获取值。

import com.eviware.soapui.support.XmlHolder
import groovy.json.JsonSlurper 

def response = context.expand( '${GetLoansList#Response}' ).toString()
log.info(response)

def slurper = new JsonSlurper()
def json = slurper.parseText response

log.info(json.items.id)

我的json响应与此类似

{
"items" : [
  {
     "id" : 48223,
     "name" : "LAI-00151007",
     "amount" : 25050.0,
     "interest_rate" : 25.99,
     "term" : 60,
  },
  {
     "id" : 48262,
     "name" : "LAI-00152581",
     "amount" : 44225.0,
     "interest_rate" : 18.9,
     "term" : 36,
  },
 ],
 "total_count" : 13
 }

我想获得给定名称的相应“id”(“name”:“LAI-00152581”,)。做这个的最好方式是什么?谢谢

json groovy soapui jsonslurper
1个回答
1
投票

您可以使用:

json.items.find({ it.name == "LAI-00152581" })?.id

当没有符合标准的?.时,items是为了安全。在这种情况下,结果将是null

从Groovy 2.5.0开始,还有另外一种方法,它在语义上是等价的:

json.items.findResult { if (it.name == "LAI-00152581") return it.id }
© www.soinside.com 2019 - 2024. All rights reserved.