Grails Json文件解析-Groovy

Grails Json文件解析-Groovy,grails,groovy,Grails,Groovy,对于我们的测试数据,我们将以JSON格式维护测试数据,下面是示例JSON文件 { "INV": [ { "TestCaseID": "APL", "TestData": [ { "INVLabel": "Title",

对于我们的测试数据,我们将以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转换为映射对象。但它并没有像预期的那样工作。有人可以指导我检索这些值吗?

您可以在
INV
节点上使用带有闭包的
{it.TestCaseID=='ID'}
方法从列表中获取第一个元素。考虑下面的示例,提取ID“代码> APL1 < /代码>的测试数据。< /P>
import groovy.json.JsonSlurper
def输入=“”{
“投资部”:[
{
“TestCaseID”:“APL”,
“测试数据”:[
{
“INVLabel”:“Title”,
“控制类型”:“文本”,
“输入值”:“固态设备”
},
{
“INVLabel”:“Inventor”,
“控制类型”:“搜索”,
“输入值”:“Sabra Anne Truesdale”
}
]
},
{
“TestCaseID”:“APL1”,
“测试数据”:[
{
“INVLabel”:“Title”,
“控制类型”:“文本”,
“输入值”:”
},
{
“INVLabel”:“Inventor”,
“控制类型”:“搜索”,
“输入值”:“jenifer”
}
]
}
]
}'''
def json=new JsonSlurper().parseText(输入)
def testData=json.INV.find{it.TestCaseID=='APL1'}.testData
println测试数据
输出:

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

谢谢,使用解析文件时,我得到了以下错误-org.codehaus.groovy.runtime.invokerinJournationException:groovy.lang.MissingMethodException:没有方法签名:groovy.json.JsonSlurper.parseText()适用于参数类型:(groovy.json.internal.LazyMap):我的代码-@Keyword def getTestData(fileName){def inputFile=new File(fileName)def InputJSON=new JsonSlurper().parseText(inputFile.text)def json=new JsonSlurper().parseText(InputJSON)def testData=json.INV.find{it.TestCaseID='APL'}.testData println testData}代替
JsonSlurper.parseText()
,您可以使用
parse()
带有文件的方法-
新建JsonSlurper().parse(新文件(文件名))