首页 > 解决方案 > 如何将枚举约束添加到 JSchema 对象?

问题描述

我正在使用 Json.net Schema 成功地将 C# 中的 JSON 模式对象构建为 [JSchema][1] 对象。我希望我的架构将一些字符串限制为某些值。

似乎 enum 关键字可以做到这一点,我看到 JSchema 确实有一个看起来很有希望的 enum 属性,但它是只读的。见https://www.newtonsoft.com/jsonschema/help/html/P_Newtonsoft_Json_Schema_JSchema_Enum.htm

文档中似乎没有其他明显的内容,因此我正在寻找有关如何将枚举约束添加到架构的建议。

更详细一点:

以这种方式构建 JSchema(从 JSchema 开始并构建它)的原因是因为我们需要从使用不同数据定义语言的模式转换为 JSON。

以下代码有效:

{
  "$schema": "http://json-schema.org/draft-06/schema#",
  "type": "object",
  "properties": {
    "First": {
      "type": "string",
      "minLength": 1,
      "maxLength": 5
    }
  }
}

它产生:

{
  "$schema": "http://json-schema.org/draft-06/schema#",
  "type": "object",
  "properties": {
    "First": {
      "type": "string",
      "minLength": 1,
      "maxLength": 5
    }
  }
}

我正在寻找添加

"enum": ["circle", "square", "triangle"]

作为 minLength 和 maxLength 之外的附加约束(我知道对 am 枚举进行长度约束可能没有内在意义,但我只是想弄清楚如何使用枚举。)

标签: c#json.netjsonschema

解决方案


您可能可以改用它:

"oneOf": [{"const": "circle"}, {"const": "square"}, {"const": "triangle"}]

推荐阅读