基于jsonschema的json验证程序包,它为最终用户返回更好的验证错误

json_payload_validator的Python项目详细描述


CircleCIPyPI pyversionsPyPI version shields.ioPyPI license

格式化来自jsonschema的验证错误消息的小python包。 如果您希望独立的json验证器与任何框架分离,那么应该使用这个包。

原因

jsonschema确实很酷,但它的验证错误消息很糟糕,因为它们是为开发人员而不是最终用户准备的。 因此,如果您有一个使用jsonschema验证json有效负载并希望向 您可以使用此软件包的最终用户:)

工作原理

3个简单的规则:

  • 如果在有效负载中不发送必需的属性,则会收到消息'foo' is a required property
  • 如果验证失败,则将返回验证规则Validation of property 'foo' failed: {'minLength': 2, 'type': 'string', 'maxLength': 50}
  • 如果在验证规则中添加message属性,则将返回其值而不是规则Validation of property 'foo' failed: Custom error message

用法

pip install json_payload_validator

成功的验证示例

fromjson_payload_validatorimportvalidateschema={'type':'object','properties':{'name':{'type':'string','minLength':2,'maxLength':50},},'required':['name']}payload={'name':'John Maus'}error=validate(payload,schema)print(error)# None

必需的属性示例

fromjson_payload_validatorimportvalidateschema={'type':'object','properties':{'name':{'type':'string'},},'required':['name']}payload={}error=validate(payload,schema)print(error)# 'name' is a required property

验证规则失败示例

fromjson_payload_validatorimportvalidateschema={'type':'object','properties':{'name':{'type':'string',{'minLength':2,'type':'string','maxLength':50}},},'required':['name']}payload={'name':555}error=validate(payload,schema)print(error)# Validation of property 'name' failed: {'minLength': 2, 'type': 'string', 'maxLength': 50}

自定义错误消息示例

fromjson_payload_validatorimportvalidateschema={'type':'object','properties':{'name':{'type':'string','message':'Name must be a string'},},'required':['name']}payload={'name':555}error=validate(payload,schema)print(error)# Validation of property 'name' failed: Name must be a string

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java3D图表JavaGnuplotHybrid   java httpclient异常“org.apache.http.conn.ConnectionPoolTimeoutException:等待连接超时”   java如何使用Drive API连接到Google Drive文件夹   java如何正确组合@PathParams和@RequestBody?   使用JsonParser的java Jackson反序列化正在跳过@context的第一个键值对   java Twitter4j为getCreatedAt和getCountry获取空白或null   java doOnNext()不会被称为Spring Webflux   java Liberty批处理在使用与spring批处理相同的输入参数启动作业时未引发异常(JobInstanceAlreadyExistsException)   api使用WordNet有没有简单的基于Java的词义消歧?   Java和YAML:如何解析多个YAML文档并将它们合并到单个YAML表示?   swing Java:mouseClicked事件不总是触发   从firebase获取Json作为字符串在java中不起作用   java将带有extrastring的意图从活动发送到选项卡片段   Java中的调用方法问题   java是否可以在TestNG dataprovider类中注入变量   java如何在安卓 studio中使列表中的项目可单击并引导到具有特定格式的新页面   java程序在eclipse中运行,但不在终端中运行   java无法让mockito模拟公共类的公共方法