【问题标题】:Manually Creating a JSON Schema Reference with JSchema使用 JSchema 手动创建 JSON 模式引用
【发布时间】:2018-08-14 19:58:52
【问题描述】:

我正在使用 JSchema 创建手动 JSON 模式。通常,我会像这样指定 JSchema 属性的属性:

JSchema props = new JSchema();
props.Properties.Add(KeyName), new JSchema { Type = JSchemaType.String });

但是,对于某些对象,我希望属性是对另一个模式中的属性的引用。当我手动执行此操作时,此方法有效:

"text": {
  "$ref": "Common.json#/definitions/Text"
}

我想要做的是使用 JSchema 自动生成上述属性。 JSchema 有一个名为 Reference 的属性,但我找不到任何有关如何使用它的文档。我试过这样做:

props.Properties.Add("Text", new JSchema { Reference = new Uri("Common.json#/definitions/Text", UriKind.RelativeOrAbsolute) });

但是不行。使用 JSchema 创建引用的正确方法是什么?

【问题讨论】:

  • 以上代码的结果是什么?有错误吗?它会产生不正确的 JSON(如果是,它是什么样的)?
  • 有了这段代码,我什么也得不到。架构中根本没有 Text 属性。
  • 我能看到的唯一例子是newtonsoft.com/jsonschema/help/html/…,但这并没有解释如何进行外部引用。除非您有任何特定原因,否则我会手动构建 JSON Schema 文件,然后将它们加载进去。我不喜欢“自动生成的类文档就是文档”……它很糟糕。如果您已付费,请直接联系他们的支持人员。
  • 问题解决了吗?我也在尝试解决这个问题:/

标签: json.net jsonschema


【解决方案1】:

你可以这样设置 $ref 属性

JSchema propertySchema = new JSchema();
propertySchema.ExtensionData["$ref"] = "Common.json#/definitions/Text";

schema.Properties.Add("Text", propertySchema);

【讨论】:

    猜你喜欢
    • 2017-01-08
    • 1970-01-01
    • 2018-07-28
    • 1970-01-01
    • 2019-07-31
    • 1970-01-01
    • 1970-01-01
    • 2021-06-12
    • 1970-01-01
    相关资源
    最近更新 更多