1

我希望这是我不正确,但我正在尝试从内存中的 JSON 字符串生成 JSON 模式。

我正在使用 GitHub 上的 NJsonSchema。 https://github.com/NJsonSchema/NJsonSchema/

string json = @"{
  ""a"": 1,
  ""name"": ""Bill Smith"",
  ""isTall"": true
}";

var schemaItem = JsonSchema4.FromJson(json);
string jsonSchema = schemaItem.ToJson();

当我执行上面的代码时,我在 jsonSchema 中得到以下值,这是不正确的。

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "a": 1,
  "name": "Bill Smith",
  "isTall": true
}

为了以防万一,我暂时为它创建了一个 GitHub 错误。 https://github.com/NJsonSchema/NJsonSchema/issues/180

4

2 回答 2

1

您使用错误,JsonSchema4.FromJson(string json)用于加载现有模式 json,而不是加载任意 json 并从中生成模式。

您可能正在寻找JsonSchema4.FromType<MyType>()可以从类型生成模式的方法,尽管那时您需要为所有内容提供实际类型。

据我所知,没有任何方法可以仅从 json 生成模式,因此您需要创建一个与您的输入匹配的类。如果你需要,那么你可以看看http://www.newtonsoft.com/jsonschema,虽然它不是一个免费的解决方案(而且我绝不隶​​属于它)。

于 2016-08-27T14:36:43.187 回答
1

在当前版本的NJsonSchema中,您可以从示例数据生成 JSON Schema:

https://github.com/RSuter/NJsonSchema/wiki/SampleJsonSchemaGenerator

提交:https ://github.com/NJsonSchema/NJsonSchema/commit/28d5a1357a9b5a3367154d3bc6e2488769b721aa

将在版本 v7.6 中可用。

DataToJsonSchemaGenerator:https ://github.com/NJsonSchema/NJsonSchema/blob/master/src/NJsonSchema/Generation/DataToJsonSchemaGenerator.cs

我认为 JsonSchema4 上还有一个 FromJsonData 方法......

于 2017-01-11T21:09:33.920 回答