【问题标题】:SOAPUI: How to find node count in JSON responseSOAPUI:如何在 JSON 响应中查找节点数
【发布时间】:2016-02-25 09:27:26
【问题描述】:

我在 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>

如何查找节点数?

【问题讨论】:

    标签: json soapui


    【解决方案1】:

    您可以提取列表并对其使用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 数据,然后应用 size 来获取计数。

    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"

    【讨论】:

    • 好的,很高兴知道。仅供参考,添加评论。举一个固定数据的例子,方便测试。您可以响应xml 变量,使其动态工作而不是固定数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多