如何在Katalon Studio中解析JSON响应
假设我们有以下JSON响应,并且我们想要解析和检索其数据:
{
“menu”:{
“id”:“文件”,
“工具”:{
“行动”:[
{
“id”:“新”,
“标题”:“新文件”
},
{
“id”:“开放”,
“标题”:“打开文件”
},
{
“id”:“关闭”,
“标题”:“关闭文件”
}
]
“错误”:[]
}
}
}JsonSlurper
我们使用这个Groovy助手类来解析JSON字符串。我们需要创建一个JsonSlurper的新实例并调用JsonSlurper.parseText方法。示例代码:
导入groovy。杰森。JsonSlurper
StringjsonString='''{“menu”:{
“id”:“文件”,
“工具”:{
“行动”:[
{“id”:“new”,“title”:“NewFile”},
{“id”:“打开”,“标题”:“打开文件”},
{“id”:“关闭”,“标题”:“关闭文件”}
]
“错误”:[]
}}}''”
JsonSlurperslurper=新的JsonSlurper()
映射parsedJson=slurper。parseText(jsonString)
导入groovy。杰森。JsonSlurper
StringjsonString='''{“menu”:{
“id”:“文件”,
“工具”:{
“行动”:[
{“id”:“new”,“title”:“NewFile”},
{“id”:“打开”,“标题”:“打开文件”},
{“id”:“关闭”,“标题”:“关闭文件”}
]
“错误”:[]
}}}''”
JsonSlurperslurper=新的JsonSlurper()
映射parsedJson=slurper。parseText(jsonString)
解析后的JSON响应现在存储在一个名为parsedJson的变量中(在我们的例子中,它是Map数据结构,但有时它可能是其他的)。
JsonSlurper还提供了几个JsonSlurper。解析重载方法,如果您的JSON输入是File,Reader,InputStream,String以外的URL,则可以使用这些方法。有关详细信息,请参阅JsonSlurper文档。
获得关键价值假设您想从上面的JSON响应中获取id值。JSON是一个结构化文档,因此您可以使用其绝对路径获取任何元素。看这个例子:
StringidValue=parsedJson。菜单。ID
StringidValue2=parsedJson。得到(“菜单”)。得到(“id”)
如您所见,有两种方法可以获得它。一种是使用点表示法(。)访问Map对象。另一种方法是使用Map,List和Set中的get方法,就像在Java中一样。
基本上,parsedJson变量是Map <String,Map <Object,Object»的一种类型。然后,要获取内部Map,请调用parsedJson。get(“menu”) - 因为“menu”是String键。此方法返回内部Map,您可以在其上调用其他get方法,直到找到密钥。
验证JSON中是否存在密钥如果要验证JSON响应中是否存在选定的密钥,可以使用类似的代码,如下所示:
进口com。公里。卡塔隆。核心。util。KeywordUtil
StringgetSelectedKey=parsedJson。菜单。ID
if(getSelectedKey==null){
KeywordUtil。markFailed(“Keynotpresent”)
}
这是一个简单的检查为空-如果在给定的关键是没有找到,空时返回。但是,有是一个特殊的情况下,当这个代码赢得“T工作,也就是说,如果关键的‘ID’有null值在你的JSON。对于这种情况,您应该使用更强大的代码:
booleanisKeyPresent=parsedJson。得到(“菜单”)。keySet()。包含(“id”)
if(!isKeyPresent){
KeywordUtil。markFailed(“Keynotpresent”)
}
您从“菜单”对象中获取所有键,然后检查它是否包含您要查找的键。
获取数组元素您的JSON响应也可能包含数组。与Java或Groovy中的任何数组一样,您可以使用arrayName [index]访问数组元素。
例如,我们可以获得“actions”数组中第一个对象的“title”值,如下所示:
StringidValue=parsedJson。菜单。工具。行动[0]。标题
StringidValue2=parsedJson。得到(“菜单”)。得到(“工具”)。得到(“行动”)。得到(0)。得(“标题”)
在此示例中,我们访问索引为0的项,即数组中的第一项(索引从零开始)。
基于某种条件获取数组元素更常见的情况是,您希望根据某些特定条件获取确切的数组元素。例如,您获得“id”为“Open”的对象的“title”值。你可以这样做:
defarray1=parsedJson。菜单。工具。行动
字符串onlickValue1=“”
for(defmember:array1){
如果(构件。ID=='打开'){
onlickValue1=成员。标题
打破
}
}
在这种情况下,我使用了for-each循环。此循环检查数组array1中的每个项目,直到满足条件。如果是这样,则将onlickValue1指定给项目的标题。
JSON数据类型JSON格式支持一些数据类型,如String,number,Boolean和null。如果您不确定数据类型是什么,可以使用关键字def。
defmyVar='从json获取值'。
根据经验,String值用引号括起来,数字不加引号(浮点也可能存在),布尔值为true或false。但是当你不确定它的类型时,使用def初始化变量总是一个不错的选择。
结论本教程提供了一些在Katalon Studio中使用JSON字符串的基本最佳实践。JSON是API / Web服务返回的最常见格式。当您执行API测试时,您可能必须处理JSON响应。希望这些基本最佳实践对您的API测试很有用。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。