【问题标题】:JSON.Net Schema multiple custom validationsJSON.Net Schema 多个自定义验证
【发布时间】:2019-04-24 06:45:31
【问题描述】:

我正在使用 Newtonsoft.Json.Schema 库并使用自定义验证来生成自定义错误消息,这些错误消息本身是在架构中定义的。

"sku" : {
        "type" : "string", 
        "message" : {
                      "required" : "The SKU is a required field", 
                   }, 
         "format" : "Required"
 }

这很好,我可以在执行自定义验证时从给定架构中提取消息。

但是我想添加更多自定义验证,例如:

"sku" : {
        "type" : "string",
        "pattern" : "\d",
        "message" : {
                      "required" : "The SKU is a required field",
                      "pattern" : "The SKU must be a number" 
                   }, 
         "format" : "Pattern"  <--- can only specify a single custom validation
 }

有没有办法让第二个自定义验证器运行,以便同时获得所需和模式的自定义验证?

(只是在这里提供一些背景...我们有必须验证的传入数据,但错误需要在数据源自的业务上下文中有意义。该业务上下文是未知的,因此上下文敏感消息,例如因为必须以某种方式将错误提供给验证)。

【问题讨论】:

    标签: json.net jsonschema


    【解决方案1】:

    所以最后我做了一个自定义验证,它从自定义验证上下文创建一个新架构,如下所示:

    JSchema valueSchema = JSchema.Parse(context.Schema.ToString() );
    

    这将为自定义验证处理的值创建一个新架构没有任何自定义验证调用。一个必要的步骤,因为context.Schema 中的现有架构包含对自定义验证的调用,如果不这样做,我们将陷入无限循环。

    现在我可以通过这个本地架构运行该值,并获得发生的所有错误的完整报告,并提供相关的自定义错误消息。

    自定义错误消息的属性名称与验证错误中给定的 ErrorType 相匹配,从而使查找变得容易。

    【讨论】:

      猜你喜欢
      • 2014-05-29
      • 1970-01-01
      • 1970-01-01
      • 2014-07-21
      • 1970-01-01
      • 2018-03-27
      • 1970-01-01
      • 2012-11-30
      • 2018-08-09
      相关资源
      最近更新 更多