如何在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響應中 獲取 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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- katalon studio基礎使用教程
- Katalon Studio > 安裝與配置(Windows)Windows
- JavaScript中迴圈遍歷JSON響應!JavaScriptJSON
- ajax接受json響應JSON
- 錄製回放模式建立測試用例 - Katalon Studio模式
- Flutter 中的 JSON 解析FlutterJSON
- 如何在macOS Monterey中強制退出未響應程式?Mac
- Python中解析json資料PythonJSON
- python 從TXT中解析json格式PythonJSON
- laravel的response()函式中,輸入array卻響應json的原因Laravel函式JSON
- 深入解析vue響應式原理Vue
- 【譯】如何在 Visual Studio 中安裝 GitHub CopilotGithub
- 如何在Visual Studio中除錯.NET原始碼除錯原始碼
- 使用selenium爬取網頁,如何在scrapy shell中除錯響應網頁除錯
- Ajax、JSON、響應式設計和Node.jsJSONNode.js
- ajax為什麼需要json格式響應資料?JSON
- @ControllerAdvice 全域性異常響應頁面和 JSONControllerJSON
- 【靜默】Oracle各類響應檔案何在?Oracle
- Exercise:JSON解析JSON
- cJSON:解析JSONJSON
- js json解析JSON
- 如何在SpringBoot中整合JWT(JSON Web Token)鑑權Spring BootJWTJSONWeb
- 【node】如何在ES modules中匯入JSON檔案JSON
- 介面測試如何在 json 中引用 mock 變數JSONMock變數
- 介面測試如何在json中引用mock變數JSONMock變數
- 應用程式無響應?如何在Mac上強制退出應用Mac
- [譯]在 Flutter 中解析複雜的 JSONFlutterJSON
- Spring boot 與 json_schema ,請求和響應 校驗Spring BootJSON
- vue響應式系統原始碼解析Vue原始碼
- 快應用如何避免JSON.parse()解析出錯JSON
- Golang 流式解析 JsonGolangJSON
- 用JS解析JSONJSON
- java解析json listJavaJSON
- Swift iOS : 解析jsonSwiftiOSJSON
- json解析模組JSON
- 解析如何在Bash中編寫函式函式
- 如何在Android studio中更新sdk版本和build-tools版本AndroidUI
- 深度解析vue.js響應式原理解析與實現Vue.js