使用NJsonSchema从C#中的示例JSON数据生成JSON模式

时间:2016-08-27 14:16:46

标签: c# json njsonschema

我希望这是我没有把握正确,但我正在尝试从内存中的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

2 个答案:

答案 0 :(得分:1)

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

你可能正在寻找的是JsonSchema4.FromType<MyType>(),它可以从一个类型中生成一个模式,但是你需要拥有实际的类型。

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

答案 1 :(得分:1)

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

请参阅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方法......