對於複雜的json結構,雖然可以使用jsonpath快速提取相應的值。然而對於json響應的整體結構和各欄位型別,使用jsonschema驗證更加方便。
安裝方法:
pip install jsonschema
以上例中的響應結果為例:
,
"headers": ,
"origin": "111.202.167.11",
"url": ""
}
整個json結構可以描述為,整體為object型別,包含args、headers、orgin、url四個屬性,其中args、headers是object型別,origin、url是字串型別,使用jsonschema語法描述如下:
,
"headers": ,
"origin": ,
"url":
}}
對於object物件,還可以使用required描述必須存在的屬性。對於args、headers還可以繼續新增properties描述其子屬性,對於字串還可以使用patten欄位描述其符合的真正表示式。
jsonschema中的型別分為string、number、integer、array、object、boolean、null七種型別。其中,number包含整數和浮點數,integer僅限整數。jsonschema每種型別常用的關鍵字如表3.3所示。
完整示例如下:
import requests
import jsonschema
res = requests.get('')
schema = ,
"age": }},
"headers": ,
"origin": \.\d\.\d\.\d"},
"url":
}} jsonschema.validate(res.json(), schema)
上例中,required限定,args必須有name和age兩個子屬性。
name欄位的pattern使用「^kevin$」表示,必須以k開頭,以n結尾,即完全等於kevin。
同樣,斷言通過時不會有任何輸出,斷言失敗是則會丟擲異常。
json schema 學習筆記
json schema 是對json資料進行資料結構描述的乙個協議,我們按照協議的規定,可以對json資料結構進行描述,也可以驗證json資料。在很多json編輯器中會用到json schema進行資料有效性的驗證。比如在vs code 中可以在工作區設定中指定每個檔案使用的schema,實現的效果...
C 斷言使用
程式一般分為debug和release版本,debug版本用於內部測試,release版本發行給使用者使用。斷言assert是僅在debug版本起作用的巨集,它用於檢查不應該發生的情況。在執行過程中,如果assert的引數為假,那麼程式就會中止 一般地還會出現提示對話,說明在什麼地方引發了asser...
C 使用斷言
程式一般分為debug版本和release版本,debug版本用於內部除錯,release版本發行給使用者使用。斷言assert是僅在debug版本起作用的巨集,它用於檢查 不應該 發生的情況。示例6 5是乙個記憶體複製函式。在執行過程中,如果assert的引數為假,那麼程式就會中止 一般地還會出現...