ITPub博客

如何在Katalon Studio中解析JSON响应

原创 Java 作者:Tybyq 时间:2018-11-09 18:07:09 0 删除 编辑

JSON响应示例

假设我们有以下JSON响应,并且我们想要解析和检索其数据:

{
  “menu”:{
    “id”:“文件”,
    “工具”:{
      “行动”:[
        {
          “id”:“新”,
          “标题”:“新文件”
        },
        {
          “id”:“开放”,
          “标题”:“打开文件”
        },
        {
          “id”:“关闭”,
          “标题”:“关闭文件”
        }
      ]
      “错误”:[]
    }
  }
}

JsonSlurper

我们使用这个Groovy助手类来解析JSON字符串。 我们需要创建一个JsonSlurper的新实例并调用JsonSlurper.parseText方法。 示例代码:

导入 groovy。杰森。JsonSlurper

String  jsonString  =  '''{“menu”:{
“id”:“文件”,
“工具”:{
“行动”:[
{“id”:“new”,“title”:“New File”},
{“id”:“打开”,“标题”:“打开文件”},
{“id”:“关闭”,“标题”:“关闭文件”}
]
“错误”:[]
}}} ''”
JsonSlurper  slurper  =  新的 JsonSlurper()
映射 parsedJson  =  slurper。parseText(jsonString)
导入 groovy。杰森。JsonSlurper

String  jsonString  =  '''{“menu”:{
“id”:“文件”,
“工具”:{
“行动”:[
{“id”:“new”,“title”:“New File”},
{“id”:“打开”,“标题”:“打开文件”},
{“id”:“关闭”,“标题”:“关闭文件”}
]
“错误”:[]
}}} ''”
JsonSlurper  slurper  =  新的 JsonSlurper()
映射 parsedJson  =  slurper。parseText(jsonString)

解析后的JSON响应现在存储在一个名为 parsedJson 的变量中 (在我们的例子中,它是Map数据结构,但有时它可能是其他的)。

JsonSlurper还提供了几个JsonSlurper。 解析 重载方法,如果您的JSON输入是File,Reader,InputStream,String以外的URL,则可以使用这些方法。 有关详细信息,请参阅 JsonSlurper文档。

获得关键价值

假设您想 从上面的JSON响应中 获取 id JSON是一个结构化文档,因此您可以使用其绝对路径获取任何元素。 看这个例子:

String  idValue  =  parsedJson。菜单。ID
String  idValue2  =  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

String  getSelectedKey  =  parsedJson。菜单。ID

if(getSelectedKey  ==  null){
KeywordUtil。markFailed(“Key not present”)
}
这 是 一个 简单的 检查 为 空 -  如果 在 给定的 关键 是 没有 找到,空 时 返回。但是, 有 是 一个 特殊的 情况下 ,当 这个 代码 赢得“T工作,也就是说,如果关键的‘ID’有null值在你的JSON。对于这种情况,您应该使用更强大的代码:
boolean  isKeyPresent  =  parsedJson。得到(“菜单”)。keySet()。包含(“id”)

if(!isKeyPresent){
KeywordUtil。markFailed(“Key not present”)
}

您从“菜单”对象中获取所有键,然后检查它是否包含您要查找的键。

获取数组元素

您的JSON响应也可能包含数组。 与Java或Groovy中的任何数组一样,您可以使用 arrayName [index] 访问数组元素

例如,我们可以获得“actions”数组中第一个对象的“title”值,如下所示:

String  idValue  =  parsedJson。菜单。工具。行动 [ 0 ]。标题
String  idValue2  =  parsedJson。得到(“菜单”)。得到(“工具”)。得到(“行动”)。得到(0)。得(“标题”)

在此示例中,我们访问索引为0的项,即数组中的第一项(索引从零开始)。

基于某种条件获取数组元素

更常见的情况是,您希望根据某些特定条件获取确切的数组元素。 例如,您获得“id”为“Open”的对象的“title”值。 你可以这样做:

def  array1  =  parsedJson。菜单。工具。行动

字符串 onlickValue1  =  “”

for(def  member:array1){
如果(构件。ID  ==  '打开'){
onlickValue1  =  成员。标题
打破
}
}

在这种情况下,我使用了for-each循环。 此循环检查数组 array1 中的每个项目, 直到满足条件。 如果是这样, 则将onlickValue1 指定给项目的标题。

JSON数据类型

JSON格式支持一些数据类型,如String,number,Boolean和null。 如果您不确定数据类型是什么,可以使用关键字 def

def  myVar  =  '从json获取值'。

根据经验,String值用引号括起来,数字不加引号(浮点也可能存在),布尔值为true或false。 但是当你不确定它的类型时,使用def初始化变量总是一个不错的选择。

结论

本教程 提供了一些在Katalon Studio中使用JSON字符串的基本最佳实践。 JSON是API / Web服务返回的最常见格式。 当您执行 API测试时 您可能必须处理JSON响应。 希望这些基本最佳实践对您的API测试很有用。


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31557424/viewspace-2219479/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2018-10-31

  • 博文量
    89
  • 访问量
    28025