JMeter中JSON數據處理

本文版權歸xmeter.net 所有。歡迎轉載,轉載請注明出處。

摘要##

JSON作為一種數據格式,越來越多地被用在Web 2.0和移動應用與后臺應用之間的數據交互。本文介紹如何利用JMeter的“JSON Path Extractor“插件對服務器端返回的JSON字符串進行變量抽取。

安裝插件##

在開始使用之前,需要先把相應的插件安裝到JMeter(作者使用的是JMeter 3.0)。打開網站,下載 plugins-manager.jar并把它放入$JMETER_HOME/lib/ext目錄下。如果之前已經啟動了JMeter,請關閉并重新啟動。啟動后,在“Options”菜單下應該會出現一個新的菜單選項“Plugins Manager”。單擊該選項,彈出的對話框中可以安裝新的插件。如下圖所示,請在“Available Plugins”中選擇“Dummy Sampler” 和“JSON Path Extractor”,然后單擊右下角的“Apply Changes and Restart JMeter”按鈕,等待下載完成后就自動重啟JMeter。

插件安裝截圖

重啟之后,可以打開Plugins Manager確認兩個插件是否已經在“Installed Plugins”選項卡下,如果沒有出現在該選項卡下,則安裝未成功。讀者可以查看一下$JMETER_HOME/lib/ext目錄下是否有新加入的JAR包,沒有的話再重新安裝一次。

插件介紹##

Dummy Sampler:該插件可以用于模擬服務器端返回的數據,而且返回的數據可以是手工在“Response Data”文本框中輸入,這樣可以避免向實際的服務器端發送數據,該插件作為驗證JSON Path Extractor或者正則表達式非常有幫助。

JSON Path Extractor:該插件可以使用JSON路徑表達式來提取JSON返回值中的內容,并且可以把提取出的值放入JMeter變量中,供后面的測試步驟來使用。

測試數據##

本文以下面的JSON片段為例來解釋如何使用JSON Path Extractor來提取內容。

{ "store": {
"book": [
{ "category": "reference",
"author": "Nigel Rees",
"title": "Sayings of the Century",
"price": 8.95
},
{ "category": "fiction",
"author": "Evelyn Waugh",
"title": "Sword of Honour",
"price": 12.99
},
{ "category": "fiction",
"author": "Herman Melville",
"title": "Moby Dick",
"isbn": "0-553-21311-3",
"price": 8.99
},
{ "category": "fiction",
"author": "J. R. R. Tolkien",
"title": "The Lord of the Rings",
"isbn": "0-395-19395-8",
"price": 22.99
}
],
"bicycle": {
"color": "red",
"price": 19.95
}
}
}

請按照以下的內容來生成一個測試腳本,并在jp@gc - Dummy Sampler的“Response Data”。

測試腳本截圖

在JSON Path Extractor中,“Destination Variable Name”指的是將抽取出來的值放在指定的變量中,如圖所示是把抽取出來的值賦值給author變量。JSONPath Expression中輸入JSON表達式,如圖所示的表達式“$..author”的意思是把JSON表達式中所有的author都取出。

JSON Path抽取器截圖

以上的表達式會生成下列的變量:

author=["Nigel Rees","Evelyn Waugh","Herman Melville","J. R. R. Tolkien"]
author_1=Nigel Rees
author_2=Evelyn Waugh
author_3=Herman Melville
author_4=J. R. R. Tolkien
author_matchNr=4

可以通過變量${author_1}取得值“Nigel Rees”,${author_2}取得“Evelyn Waugh”等依此類推。

變量使用表達式

再看如上所示的表達式,取得數組下標為0的JSON串下的author字段,該插件會生成以下的變量:

author=["Nigel Rees"]
author_1=Nigel Rees
author_matchNr=1

JSONPath表達式甚至可以根據條件來過濾復合條件的數據,更多關于JSONPath表達式的例子可以參考這里

JSON數據的其它處理方法##

除了JSONPath表達式之外,讀者也可以考慮使用正則表達式來抽取內容,正則表達式的問題在于如果要處理的JSON字符串比較復雜,正則表達式的寫法也會變得很復雜,不如JSONPath表達式那么簡明易懂。

另外的一種處理方法是采用BeanShell和第三方JSON庫來抽取內容,這種方式下讀者可以采用自己比較熟悉的庫來解析和抽取相應的內容,但是這種方式需要讀者對第三方的JSON庫的使用有所了解,而且部署起來也不是特別方便,另外,使用BeanShell會對性能產生一定的影響。

讀者對這兩種方式感興趣的話,可以參考這篇文章

關于我們##

XMeter成立于2016年,核心團隊都來自于IBM,是一家領先技術的性能測試持續集成咨詢與服務提供商。我們致力于提供給客戶可靠,簡單,低成本的性能測試解決方案。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,565評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,115評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,577評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,514評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,234評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,621評論 1 326
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,641評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,822評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,380評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,128評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,319評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,879評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,548評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,970評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,229評論 1 291
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,048評論 3 397
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,285評論 2 376

推薦閱讀更多精彩內容