簡體   English   中英

使用 cerberus 驗證字典列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM