Ruby中使用JSON Schema仅校验对象类型而非内部属性的方法
Ruby 使用JSON Schema仅校验数据为对象类型的实现
你当前提供的代码已经可以满足需求,JSON Schema中仅配置type为object时,只会校验目标数据是否为对象/Hash类型,不会校验内部的任意键值内容。
可用代码示例
require "json-schema" # 仅指定校验类型为对象,无任何内部属性校验规则 schema = {"type" => "object"} begin # 校验Hash类型数据会返回true,无需关心内部键值 JSON::Validator.validate(schema, {"a": 5}) # 带有任意数量、任意类型键值的Hash都可校验通过 JSON::Validator.validate(schema, {"name": "张三", "age": 25, "hobbies": ["打球", "阅读"]}) # 非Hash类型(如数组、字符串、数字等)会触发校验失败 JSON::Validator.validate(schema, [1,2,3]) rescue JSON::Schema::ValidationError => e puts e.message end
校验规则说明
- 仅配置
{"type" => "object"}的Schema只会校验数据的顶层类型,所有符合Ruby Hash格式、JSON对象格式的数据都会通过校验 - 内部的键名、值类型、值内容完全不受限制,符合你不需要校验内部属性的需求
- 如果后续需要限制仅能出现指定属性,才需要额外添加
properties和additionalProperties配置,当前场景不需要增加这类参数
内容的提问来源于stack exchange,提问作者Basa Sai ram
相关产品推荐
相关产品推荐

