1. 程式人生 > >如何在Katalon Studio中解析JSON響應

如何在Katalon Studio中解析JSON響應

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響應中獲取idJSON是一個結構化文件,因此您可以使用其絕對路徑獲取任何元素。看這個例子:

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測試很有用。