C# 如何将枚举约束添加到JSchema对象?

C# 如何将枚举约束添加到JSchema对象?,c#,json.net,jsonschema,C#,Json.net,Jsonschema,我正在使用JSON.net模式成功地将C#中的JSON模式对象构建为[JSchema][1]对象。我希望我的模式将一些字符串约束为某些值 enum关键字似乎可以做到这一点,我看到JSchema确实有一个enum属性,看起来很有希望,但它是只读的。看 文档中似乎没有其他明显的内容,因此我正在寻找有关如何将枚举约束添加到模式的建议 再详细一点: 以这种方式构建JSchema的原因(从JSchema开始并构建出来)是因为我们需要从不同数据定义语言的模式转换为JSON 以下代码起作用: { "$sc

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

enum关键字似乎可以做到这一点,我看到JSchema确实有一个enum属性,看起来很有希望,但它是只读的。看

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

再详细一点:

以这种方式构建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 enum的长度约束可能没有内在意义,但我只是想弄清楚如何使用enum。)

我认为使用JSchema对象不可能一点一点地构建模式。我不认为它是为这个用例设计的

我可以看到生成JSchema的两种方法:

  • 用JSON编写模式,然后使用
  • 写一个C#POCO,然后用它来推断模式。我会先使用这个选项。这里有一个例子:

  • 我认为使用JSchema对象不可能一点一点地构建模式。我不认为它是为这个用例设计的

    我可以看到生成JSchema的两种方法:

  • 用JSON编写模式,然后使用
  • 写一个C#POCO,然后用它来推断模式。我会先使用这个选项。这里有一个例子:

  • 您可能可以改为使用此选项:

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

    您可能可以改为使用此选项:

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

    谢谢我在澄清问题的原始问题中,在“稍微详细一点”下添加了更多细节:@occamman您的两个代码示例是相同的。我想第一个应该是c#?谢谢。我在澄清问题的原始问题中,在“稍微详细一点”下添加了更多细节:@occamman您的两个代码示例是相同的。我相信第一个应该是c#?