3 回答
TA贡献1797条经验 获得超6个赞
如果您将记录列表作为列表,而不是作为 json 字符串,则可以调用
def id = YourResponse.Result.find{it.Amount==97.41 && it.CreatedDate=="10/17/2018"}
它将返回与您的搜索条件匹配的第一个找到的结果。如果您使用相同的闭包调用 findAll 而不是 find ,您将获得所有匹配项的列表。
TA贡献1810条经验 获得超4个赞
解决方案:
int i = response.path("Result.find{it.Amount.toDouble()==293.51 && it.CreatedDate=='10/26/2018'}.Id");
我需要在我的查询中添加“toDouble()”。it.Amount.toDouble()==293.51,不是 it.Amount==293.51。添加 toDouble() 后,查询按预期工作。
TA贡献1993条经验 获得超5个赞
很难判断您是否已经解析了 JSON,因此我也包含了代码来执行此操作。这是普通的 Groovy,而不是特定于 Rest Assured。
import groovy.json.JsonSlurper
def text = '''
{
"StatusCode": 200,
"Result": [
{
"Id": 15015600,
"Amount": 97.41,
"CreatedDate": "10/17/2018",
},
{
"Id": 15015602,
"Amount": 682.11,
"CreatedDate": "10/17/2018",
}
]
}'''
def json = new JsonSlurper().parseText(text)
assert json.Result.find{ it.Amount == 97.41 && it.CreatedDate == '10/17/2018' }.Id == 15015600
添加回答
举报