[英]Validate list of dicts using cerberus
開始使用 cerberus 進行合同測試。
當我們獲得基於 dict 的 JSON 結構時,它可以完美地工作,例如:
{'results': [{"key": "value"}, {"key": "value"}, {"key":"value}]}
但是當響應只是一個字典列表時,一切都會變糟,例如:
[{"key": "value"}, {"key": "value"}, {"key":"value}]
我面臨的基本錯誤是:
cerberus.validator.DocumentError: '[{'id': 'XXX', 'is_supported': True}]' is not a document, must be a dict
指定頂級類型:模式中的“列表”沒有幫助,返回模式錯誤:
cerberus.schema.SchemaError: {'type': ['must be of dict type']}
天真的解決方案只是通過列表並驗證里面的所有實體。 但看起來應該有更合適的方法來做到這一點。
據我了解(正如谷歌所說),頂級數組是一個有效的 JSON 結構,所以應該有一種方法可以正確驗證它,不是嗎?
我更願意將此作為評論發布,但我沒有聲譽。 盡管如此,還是有人在這里問了同樣的問題: https : //github.com/pyeve/cerberus/issues/220
一種解決方案是編寫Validator 子類,另一種是使用cerberus-list-schema ,它顯然基於 Cerberus 但也支持列表和數組模式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.