微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

验证 JSON-SCHEMA 中的多个重复对象

如何解决验证 JSON-SCHEMA 中的多个重复对象

我想用 json-schema 验证一个 json 对象,但该 json 对象可以根据用户的需要多次复制其值。

用户创建他的 json 时,该对象的键可以重复多次。

示例 1:(带对象的集合)

module ModuleName
  module Workers
    class WorkerClass
      include Sidekiq::Worker

      sidekiq_options queue: 'default',retry: true


      def perform # here with none,1 or more params
        # update some model
      end
    end
  end
end

示例 1 的 JSON-SCHEMA

{ 
  "info":
  [
  { 
    "name":  "aaron","email": "aaron.com"
  }
  ]
}

示例 2:(带有 2 个对象的集合)

   {
      "$schema": "http://json-schema.org/draft-04/schema#","type": "object","properties": {
        "name": {
          "type": "string"
        },"email": {
          "type": "string"
        }
      },"required": [
        "name","email"
      ]
    }

示例 2 的 JSON SCHEMA

{ 
  "info":
  [
  { 
    "name":  "aaron","email": "aaron.com"
  },{ 
    "name":  "misa","email": "misa.com"
  }
  ]
}

简而言之,我要找的是一个动态的 json 模式,无论集合增长多少次,它都只能使用 1 个,而不能生成多个。

解决方法

当您使用draft-04 时,我将引用draft-04 规范。

这意味着您希望 items 具有对象值而不是对象数组。

“items”的值必须是一个对象或一个数组。如果是
一个对象,这个对象必须是一个有效的 JSON 模式。如果是
数组,该数组的项必须是对象,并且这些对象中的每一个 必须是有效的 JSON 架构。

Draft-04 规范 https://datatracker.ietf.org/doc/html/draft-fge-json-schema-validation-00#section-5.3.1

在 JSON Schema 2020-12 中,items 只能是一个对象值,并且您必须对元组使用不同的关键字,如验证。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。