Json 文件解析 - Groovy

Json file parsing - Groovy

对于我们的测试数据,我们将以 JSON 格式维护测试数据,下面是示例 JSON 文件。

{
    "INV": [
        {
            "TestCaseID": "APL",
            "TestData": [
                {
                    "INVLabel": "Title",
                    "Controltype": "text",
                    "Inputvalues": "solid state device"
                },
                {
                    "INVLabel": "Inventor",
                    "Controltype": "search",
                    "Inputvalues": "Sabra-Anne Truesdale"
                }
            ]
        },
        {
            "TestCaseID": "APL1",
            "TestData": [
                {
                    "INVLabel": "Title",
                    "Controltype": "text",
                    "Inputvalues": " "
                },
                {
                    "INVLabel": "Inventor",
                    "Controltype": "search",
                    "Inputvalues": "jenifer"
                }
            ]
        }
    ]
}

如何使用 JsonSlurper 根据测试用例 ID 检索测试数据?。 最初,我计划将 JSON 转换为我尝试过的 Map 对象。但它没有按预期工作。谁能指导我检索这些值?

您可以在带有闭包 { it.TestCaseID == 'ID'}INV 节点上使用 find() 方法从列表中获取第一个元素。考虑以下示例,该示例提取 id APL1.

的测试数据
import groovy.json.JsonSlurper

def input = '''{
    "INV": [
        {
            "TestCaseID": "APL",
            "TestData": [
                {
                    "INVLabel": "Title",
                    "Controltype": "text",
                    "Inputvalues": "solid state device"
                },
                {
                    "INVLabel": "Inventor",
                    "Controltype": "search",
                    "Inputvalues": "Sabra-Anne Truesdale"
                }
            ]
        },
        {
            "TestCaseID": "APL1",
            "TestData": [
                {
                    "INVLabel": "Title",
                    "Controltype": "text",
                    "Inputvalues": " "
                },
                {
                    "INVLabel": "Inventor",
                    "Controltype": "search",
                    "Inputvalues": "jenifer"
                }
            ]
        }
    ]
}'''

def json = new JsonSlurper().parseText(input)

def testData = json.INV.find { it.TestCaseID == 'APL1' }.TestData

println testData

输出:

[[INVLabel:Title, Controltype:text, Inputvalues: ], [INVLabel:Inventor, Controltype:search, Inputvalues:jenifer]]