V Cerberus (Python), je tam způsob, jak vytvořit schéma, které umožňuje libovolné klíčové jméno ve slovníku?

0

Otázka

Vzhledem slovníku, kde se horní úroveň klíče může být libovolná hodnota, ale tam je přísný schématu v hodnoty těchto klíčů:

{"rand_value": ["key1": "val1", "key2": "val2"], "another_rand_value": ["key1": "val1", "key2": "val2"]}

Mohu vytvořit Cerberus schéma, které bude vymáhat?

cerberus dictionary python
2021-11-23 19:50:55
1

Nejlepší odpověď

1

Cerberus musí znát název pole, takže je možné určit, který ověřovací pravidlo se vztahuje na to, tak nemůžeš dělat přesně to, co žádáte. Neexistují žádné "nejvyšší úrovni" pravidla, která platí pro celý dokument, a Cerberus nepodporuje zástupné znaky pro názvy polí.

Můžete však vytvořit schéma "on the fly", založené na skutečné názvy polí přítomných v dokumentu, ověřit proti.

v = cerberus.Validator()
document = {"rand_value": {"key1": "val1", "key2": "val2"}, 
            "another_rand_value": {"key1": "val1", "key2": "val2"}}
fieldrule = {"type": "dict", "keysrules": {"type": "string"}}   # etc
v.validate(document, {field: fieldrule for field in document})
2021-12-02 18:16:38

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................