最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python-json校驗-jsonpath解析

 更新時間:2022年11月19日 14:54:21   作者:雨水的早晨  
這篇文章主要介紹了python-json校驗-jsonpath,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

背景

在進行接口自動化測試的時候,對響應(yīng)結(jié)果進行校驗,基本上都是對json數(shù)據(jù)的校驗,響應(yīng)內(nèi)容十分復(fù)雜,當(dāng)然驗證也是一個很龐大的工程 ,不過都是可以通過jsonpath 解決。

JSONPath 提供了強大的 JSON 解析功能,可以更便捷靈活的用來獲取對應(yīng)的 JSON 內(nèi)容。

表示法

JSONPath 有兩種表示方式, 可以使用點表示法,也可以使用括號表示法

  • 點表示法 例子:$.store.book[0].title
  • 括號表示法 例子:$['store']['book'][0]['title']

官方幫助文檔

jsonpath的語法

語法描述
$根對象/元素
@當(dāng)前對象/元素
. 或者 []子運算符,匹配下級元素
..遞歸下降,遞歸方式匹配所有子元素
*通配符。所有對象/元素,無論其名稱
[]下標(biāo)運算符,jsonpath 從0開始
[,]連接的操作符,多個結(jié)果拼接成列表返回
[開始:結(jié)束:步驟]從 ES4 借來的數(shù)組切片運算符。
?()應(yīng)用過濾器(腳本)表達式。
()腳本表達式,使用底層腳本引擎。

示例

{ "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
    }
  }
}
jsonpath結(jié)果備注
$.store.book[*].author所有書籍的作者
$..author所有的作者
$.store.*商店下的所有元素/對象,包括書籍和自行車
$.store..price商店里所有元素/對象的價格
$..book[2]下標(biāo)從0開始,第3本書
$..book[(@.length-1)]按順序排列最后一本書用到了()和@兩個語法
$..book[-1:]按順序排列最后一本書用到了[]數(shù)組下標(biāo)切片
$..book[0,1]第1本書和第2本書,前兩本書
$..book[:2]第1本書和第2本書,前兩本書$…book[0:2] ,從0開始,0 1,前兩本書
$..book[?(@.isbn)]有isbn字段的所有書籍
$..book[?(@.price<10)]所有價格小于10的書籍
$..*json結(jié)構(gòu)的所有元素

實戰(zhàn)

安裝jsonpath

pip3 install jsonpath

以網(wǎng)上一個開源的獲得天氣的API為例子:

def test_get_json(self):
        r = requests.get("http://t.weather.sojson.com/api/weather/city/101191102")
        print(r.text)
        r_json = r.json()
        # 用點方法來獲得notice的內(nèi)容
        yesterday = jsonpath(r_json, "$.data.yesterday.notice")  
        print(yesterday)
        # 獲得aqi=15 的forecast元素
        aqi = jsonpath(r_json, "$..forecast[?(@.aqi==15)]")
        print(aqi)

當(dāng)不知道有jsonpath這個神器的時候,我是通過遍歷一個個元素,然后再去比對具體的字段信息,比如下方:獲得duration 超過7000 的api信息

{
	"apis": [{
		"path": "/path",
		"duration": 7890
	}, {
		"path": "/path",
		"duration": 6890
	}, {
		"path": "/path",
		"duration": 5890
	}]
}

通過遍歷的方式獲得:

apis = '{"apis":[{"path":"/path","duration":7890},{"path":"/path","duration":6890},{"path":"/path","duration":5890}]}'
print(json.loads(apis))
apis_json = json.loads(apis)
# 一個個遍歷
api_duration = []
for api in apis_json["apis"]:
   duration = api["duration"]
   if int(duration) > 7000:
       print(str(duration))
       api_duration.append(api["path"])
print(api_duration)

通過jsonpath獲得

#jsonpath 更簡單
api_duration2 = jsonpath(apis_json, "$.apis[?(@.duration>7000)].path")
print(api_duration2)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python實現(xiàn)Keras搭建神經(jīng)網(wǎng)絡(luò)訓(xùn)練分類模型教程

    Python實現(xiàn)Keras搭建神經(jīng)網(wǎng)絡(luò)訓(xùn)練分類模型教程

    這篇文章主要介紹了Python實現(xiàn)Keras搭建神經(jīng)網(wǎng)絡(luò)訓(xùn)練分類模型教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • python機器學(xué)習(xí)庫xgboost的使用

    python機器學(xué)習(xí)庫xgboost的使用

    這篇文章主要介紹了python機器學(xué)習(xí)庫xgboost的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • 基于python定位棋子位置及識別棋子顏色

    基于python定位棋子位置及識別棋子顏色

    本文主要介紹了python定位棋子位置及識別棋子顏色,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • 如何解決Pycharm編輯內(nèi)容時有光標(biāo)的問題

    如何解決Pycharm編輯內(nèi)容時有光標(biāo)的問題

    文章介紹了如何在PyCharm中配置VimEmulator插件,包括檢查插件是否已安裝、下載插件以及安裝IdeaVim插件的步驟
    2025-02-02
  • Python中字符串轉(zhuǎn)換為列表的常用方法總結(jié)

    Python中字符串轉(zhuǎn)換為列表的常用方法總結(jié)

    本文將詳細(xì)介紹Python中將字符串轉(zhuǎn)換為列表的八種常用方法,每種方法都具有其獨特的用途和適用場景,文中的示例代碼講解詳細(xì),感興趣的可以了解下
    2023-11-11
  • Django中的WebSocket實時通信的實現(xiàn)小結(jié)

    Django中的WebSocket實時通信的實現(xiàn)小結(jié)

    在Django中,使用WebSocket可以實現(xiàn)實時通信,例如聊天應(yīng)用、實時更新等,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05
  • pyspark創(chuàng)建DataFrame的幾種方法

    pyspark創(chuàng)建DataFrame的幾種方法

    為了便于操作,使用pyspark時我們通常將數(shù)據(jù)轉(zhuǎn)為DataFrame的形式來完成清洗和分析動作。那么你知道pyspark創(chuàng)建DataFrame有幾種方法嗎,下面就一起來了解一下
    2021-05-05
  • python自動化測試selenium核心技術(shù)處理彈框

    python自動化測試selenium核心技術(shù)處理彈框

    這篇文章主要為大家介紹了python自動化測試selenium核心技術(shù)處理彈框的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-11-11
  • python3實現(xiàn)二叉樹的遍歷與遞歸算法解析(小結(jié))

    python3實現(xiàn)二叉樹的遍歷與遞歸算法解析(小結(jié))

    這篇文章主要介紹了python3實現(xiàn)二叉樹的遍歷與遞歸算法解析(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • python os.path模塊使用方法介紹

    python os.path模塊使用方法介紹

    os.path 模塊是系統(tǒng)路徑操作模塊,但實際的原理可以把它認(rèn)為是處理包含斜杠("/")和反斜杠("\")字符串的模塊,其中,斜杠("/")是 linux 系統(tǒng)下的路徑分隔符,和反斜杠("\")是 windows 系統(tǒng)下的路徑分隔符
    2022-08-08

最新評論

鲜城| 镇安县| 滨海县| 金阳县| 西安市| 威信县| 栾川县| 额尔古纳市| 波密县| 民乐县| 江门市| 绿春县| 江山市| 浦北县| 拜城县| 广德县| 思茅市| 长子县| 博兴县| 尉氏县| 德州市| 睢宁县| 河东区| 青河县| 香港| 筠连县| 三台县| 桓仁| 黔东| 威远县| 新安县| 苏尼特左旗| 乐清市| 河南省| 龙里县| 临沭县| 循化| 缙云县| 渭源县| 洪雅县| 舒城县|