SoapUI JSON 解析 - 使用子值获取父节点
SoapUI JSON Parsing - Get Parent Node using Child value
我收到来自 SoapUI 的 JSON 响应,如下所示。
{
"-1": {
"startDate": "",
"modifiedBy": "",
"endDate": "",
"projectId": 1,
"build": "",
"projectKey": "TEST",
"started": ""
},
"0": {
"startDate": "",
"modifiedBy": "",
"endDate": "",
"projectId": 2,
"build": "",
"projectKey": "BEST",
"started": ""
},
"2": {
"startDate": "",
"modifiedBy": "",
"endDate": "",
"projectId": 3,
"build": "",
"projectKey": "WORST",
"started": ""
}
}
我的要求是,我必须使用 JsonSurpler 或 Groovy 脚本测试步骤获得具有 projectkey="BEST" 的 value/node“0”。 projectkey 现在位于节点“0”下。也许它会低于“10”或“1000”或“-500”。
如何使用子节点值获取父节点?
有多种方法可以实现这一点。这些是我现在能记住的最简单的:
import groovy.json.JsonSlurper
String string = '''{
"-1": {
"startDate": "",
"modifiedBy": "",
"endDate": "",
"projectId": 1,
"build": "",
"projectKey": "TEST",
"started": ""
},
"0":{
"startDate": "",
"modifiedBy": "",
"endDate": "",
"projectId": 2,
"build": "",
"projectKey": "BEST",
"started": ""
},
"2": {
"startDate": "",
"modifiedBy": "",
"endDate": "",
"projectId": 3,
"build": "",
"projectKey": "WORST",
"started": ""
}
}'''
def json = new JsonSlurper().parseText(string)
assert json.find { it.value?.projectKey == 'BEST' }?.key == '0'
assert json.findResult { k, v -> v?.projectKey == 'BEST' ? k : null } == '0'
这将找到第一个满足条件的项目。如果您需要所有满足条件的项目,则相应地使用 findAll
或 findResults
。
我收到来自 SoapUI 的 JSON 响应,如下所示。
{
"-1": {
"startDate": "",
"modifiedBy": "",
"endDate": "",
"projectId": 1,
"build": "",
"projectKey": "TEST",
"started": ""
},
"0": {
"startDate": "",
"modifiedBy": "",
"endDate": "",
"projectId": 2,
"build": "",
"projectKey": "BEST",
"started": ""
},
"2": {
"startDate": "",
"modifiedBy": "",
"endDate": "",
"projectId": 3,
"build": "",
"projectKey": "WORST",
"started": ""
}
}
我的要求是,我必须使用 JsonSurpler 或 Groovy 脚本测试步骤获得具有 projectkey="BEST" 的 value/node“0”。 projectkey 现在位于节点“0”下。也许它会低于“10”或“1000”或“-500”。
如何使用子节点值获取父节点?
有多种方法可以实现这一点。这些是我现在能记住的最简单的:
import groovy.json.JsonSlurper
String string = '''{
"-1": {
"startDate": "",
"modifiedBy": "",
"endDate": "",
"projectId": 1,
"build": "",
"projectKey": "TEST",
"started": ""
},
"0":{
"startDate": "",
"modifiedBy": "",
"endDate": "",
"projectId": 2,
"build": "",
"projectKey": "BEST",
"started": ""
},
"2": {
"startDate": "",
"modifiedBy": "",
"endDate": "",
"projectId": 3,
"build": "",
"projectKey": "WORST",
"started": ""
}
}'''
def json = new JsonSlurper().parseText(string)
assert json.find { it.value?.projectKey == 'BEST' }?.key == '0'
assert json.findResult { k, v -> v?.projectKey == 'BEST' ? k : null } == '0'
这将找到第一个满足条件的项目。如果您需要所有满足条件的项目,则相应地使用 findAll
或 findResults
。