【问题标题】:json schema validation not enforcing typejson模式验证不强制类型
【发布时间】:2021-11-28 10:04:30
【问题描述】:

我有一个存储 json 的列。我试图确保只有一组对象可以存储在此列中,如下面的 json 架构中所述。该模式正在工作,除了我能够将属性show 保存为字符串,而它应该被强制为布尔值。例如,[{"name"=>"primary_phone", "show"=> "some text"}] 保存正确,但不应该正确保存。如何强制 show 必须是布尔值?

{
  "type": "array",
  "items": {
    "definitions": {
        "name": { "type": "string" },
        "show": {"type": "boolean"}
    },
    "required": ["name", "show"]
  }
  
}

【问题讨论】:

  • 框架挑战:如果您存储在 JSON 列中的数据具有已定义的架构,那么您到底为什么首先使用 JSON 列?你知道什么是自我验证吗?一个数据库表。
  • 这将是一个 has_many/belongs_to 关系,并且对于我想要完成的工作效率低下。
  • 这几乎可以肯定是过早优化的情况,但实际上从未成功。如果有的话,JSON 列往往会导致查询速度非常慢,因为它更难正确索引数据并导致非规范化。
  • 我不需要根据json数据查询。我只需要获取它。
  • JSON 模式不仅仅适用于 API。将其用于存储验证是一个非常好的用例。

标签: ruby-on-rails json jsonschema json-schema-validator


【解决方案1】:

“项目”下的架构无效。也许您的意思是“属性”而不是“定义”?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-01
    • 1970-01-01
    • 2011-06-08
    相关资源
    最近更新 更多