Генерация JSON-схемы из образца данных JSON в C# с NJsonSchema
Я надеюсь, что это я не держу это правильно, но я пытаюсь сгенерировать схему JSON из строки JSON, которая у меня есть в памяти.
Я использую NJsonSchema от GitHub. 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 ответа
В текущей версии 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
Я думаю, что есть также метод FromJsonData на JsonSchema4....
Вы используете это неправильно, JsonSchema4.FromJson(string json)
используется для загрузки существующей схемы json, не загружая произвольный json и не генерируя из него схему.
То, что вы можете искать, это JsonSchema4.FromType<MyType>()
который может генерировать схему из типа, хотя тогда вам нужно будет иметь фактические типы для всего.
Насколько я могу судить, нет способа сгенерировать схему только из json, поэтому вам нужно создать класс, соответствующий вашим входным данным. Если вам это нужно, вы можете взглянуть на http://www.newtonsoft.com/jsonschema, хотя это не бесплатное решение (и я никоим образом не связан с ним).