SOAPUI:如何在 JSON 响应中查找节点数
SOAPUI: How to find node count in JSON response
我在 SOAP UI 中有 JSON 响应:-
我需要在这个 JSON 中找到 JSON 个节点的数量。
我尝试使用 JSONPATH Count 但它没有给出准确的结果。
这里有 8 个节点,预期作为输出。
<data contentType="text/plain" contentLength="772"><![CDATA[[{
"EmployeeId": "99",
"EmployeeName": "Doe",
"Role": "Dr"
},
{
"EmployeeId": "88",
"EmployeeName": "John",
"Role": "Dr"
},
{
"EmployeeId": "999",
"EmployeeName": "Doe",
"Role": "Dr"
},
{
"EmployeeId": "888",
"EmployeeName": "John",
"Role": "Dr"
},
{
"EmployeeId": "777",
"EmployeeName": "Keerthi",
"Role": "Dr"
},
{
"EmployeeId": "666",
"EmployeeName": "Keerthi",
"Role": "Dr"
},
{
"EmployeeId": "1234",
"EmployeeName": "Sushant",
"Role": "Doctor"
},
{
"EmployeeId": "107",
"EmployeeName": "John8",
"Role": "LabTech"
}]]]></data>
如何找到节点数?
您可以提取列表并在其上使用 size()
方法使用 groovy script
获取计数。
例如:
def employees = '''
[
{
"EmployeeId": "88",
"EmployeeName": "John",
"Role": "Dr"
},
{
"EmployeeId": "999",
"EmployeeName": "Doe",
"Role": "Dr"
}
]'''
def employeeList = new groovy.json.JsonSlurper().parseText( employees )
println employeeList.size()
输出 是预期的 2。
更新:
如果你想要你提供的具体数据,给你。
由于数据不是直接 json 类型,即包裹在 cdata
中,它是 xml.
的一部分
所以首先需要从 xml 中提取 json 数据,然后应用大小来获取计数。
def xml = '''
<data contentType="text/plain" contentLength="772"><![CDATA[[{
"EmployeeId": "99",
"EmployeeName": "Doe",
"Role": "Dr"
},
{
"EmployeeId": "88",
"EmployeeName": "John",
"Role": "Dr"
},
{
"EmployeeId": "999",
"EmployeeName": "Doe",
"Role": "Dr"
},
{
"EmployeeId": "888",
"EmployeeName": "John",
"Role": "Dr"
},
{
"EmployeeId": "777",
"EmployeeName": "Keerthi",
"Role": "Dr"
},
{
"EmployeeId": "666",
"EmployeeName": "Keerthi",
"Role": "Dr"
},
{
"EmployeeId": "1234",
"EmployeeName": "Sushant",
"Role": "Doctor"
},
{
"EmployeeId": "107",
"EmployeeName": "John8",
"Role": "LabTech"
}]]]></data>'''
def data = new XmlSlurper().parseText(xml)
def list = new groovy.json.JsonSlurper().parseText( data.toString())
log.info list.size()
您也可以使用 :
断言它
assert 8 == list.size(), "Employee count is not matching"
我在 SOAP UI 中有 JSON 响应:- 我需要在这个 JSON 中找到 JSON 个节点的数量。 我尝试使用 JSONPATH Count 但它没有给出准确的结果。 这里有 8 个节点,预期作为输出。
<data contentType="text/plain" contentLength="772"><![CDATA[[{
"EmployeeId": "99",
"EmployeeName": "Doe",
"Role": "Dr"
},
{
"EmployeeId": "88",
"EmployeeName": "John",
"Role": "Dr"
},
{
"EmployeeId": "999",
"EmployeeName": "Doe",
"Role": "Dr"
},
{
"EmployeeId": "888",
"EmployeeName": "John",
"Role": "Dr"
},
{
"EmployeeId": "777",
"EmployeeName": "Keerthi",
"Role": "Dr"
},
{
"EmployeeId": "666",
"EmployeeName": "Keerthi",
"Role": "Dr"
},
{
"EmployeeId": "1234",
"EmployeeName": "Sushant",
"Role": "Doctor"
},
{
"EmployeeId": "107",
"EmployeeName": "John8",
"Role": "LabTech"
}]]]></data>
如何找到节点数?
您可以提取列表并在其上使用 size()
方法使用 groovy script
获取计数。
例如:
def employees = '''
[
{
"EmployeeId": "88",
"EmployeeName": "John",
"Role": "Dr"
},
{
"EmployeeId": "999",
"EmployeeName": "Doe",
"Role": "Dr"
}
]'''
def employeeList = new groovy.json.JsonSlurper().parseText( employees )
println employeeList.size()
输出 是预期的 2。
更新:
如果你想要你提供的具体数据,给你。
由于数据不是直接 json 类型,即包裹在 cdata
中,它是 xml.
的一部分
所以首先需要从 xml 中提取 json 数据,然后应用大小来获取计数。
def xml = '''
<data contentType="text/plain" contentLength="772"><![CDATA[[{
"EmployeeId": "99",
"EmployeeName": "Doe",
"Role": "Dr"
},
{
"EmployeeId": "88",
"EmployeeName": "John",
"Role": "Dr"
},
{
"EmployeeId": "999",
"EmployeeName": "Doe",
"Role": "Dr"
},
{
"EmployeeId": "888",
"EmployeeName": "John",
"Role": "Dr"
},
{
"EmployeeId": "777",
"EmployeeName": "Keerthi",
"Role": "Dr"
},
{
"EmployeeId": "666",
"EmployeeName": "Keerthi",
"Role": "Dr"
},
{
"EmployeeId": "1234",
"EmployeeName": "Sushant",
"Role": "Doctor"
},
{
"EmployeeId": "107",
"EmployeeName": "John8",
"Role": "LabTech"
}]]]></data>'''
def data = new XmlSlurper().parseText(xml)
def list = new groovy.json.JsonSlurper().parseText( data.toString())
log.info list.size()
您也可以使用 :
断言它
assert 8 == list.size(), "Employee count is not matching"