JsonPath使用教程

老僧觀天下發表於2020-09-18

application/json標識Json資料格式,是Http請求常見的一種Content-Type。我們經常也會看到介面返回資料型別為json格式。功能測試/自動化指令碼里,經常會需要提取json資料,用作上下文使用或者用作斷言校驗。使用JsonPath可以很好的完成對Json的提取使用

Jmeter的JsonPath提取器

JSON提取器說明

Apply to:應用範圍
Names of created variables :接收值的變數名,自定義,多個變數用分號分隔 
JSON Path expression: json path表示式,也是用分號分隔 
Match No.(0 for Random):0表示隨機;n取第幾個匹配值;-1匹配所有。若只要獲取到匹配的第一個值,則填寫1
Compute concatenation var(suffix_ALL):如果找到許多結果,則外掛將使用' , '分隔符將它們連線起來,並將其儲存在名為<variable name> _ALL的var中
Default Values: 預設值,匹配不到值的時候取該值,可寫error。

如何編寫JsonPath

  1. 基本語法
    image

  2. 使用示例

$.store.book[*].author	獲取json中store下book下的所有author值
$..author	獲取所有json中所有author的值
$.store.*	所有的東西,書籍和自行車
$.store..price	獲取json中store下所有price的值
$..book[2]	獲取json中book陣列的第3個值
$..book[-2]	倒數的第二本書
$..book[0,1]	前兩本書
$..book[:2]	從索引0(包括)到索引2(排除)的所有圖書
$..book[1:2]	從索引1(包括)到索引2(排除)的所有圖書
$..book[-2:]	獲取json中book陣列的最後兩個值
$..book[2:]	獲取json中book陣列的第3個到最後一個的區間值
$..book[?(@.isbn)]	獲取json中book陣列中包含isbn的所有值
$.store.book[?(@.price < 10)]	獲取json中book陣列中price<10的所有值
$..book[?(@.price <= $['expensive'])]	獲取json中book陣列中price<=expensive的所有值
$..book[?(@.author =~ /.*REES/i)]	獲取json中book陣列中的作者以REES結尾的所有值(REES不區分大小寫)
$..*	逐層列出json中的所有值,層級由外到內
$..book.length()	獲取json中book陣列的長度

官網給出的Json示例

{
    "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
        }
    },
    "expensive": 10
}

Java的JsonPath工具包

<dependency>
    <groupId>com.jayway.jsonpath</groupId>
    <artifactId>json-path</artifactId>
    <version>2.4.0</version>
</dependency>
類似Jar不僅僅這一個

Python的JsonPath工具包

import jsonpath

掃一掃,關注我

相關文章