如何从json对象字符串中创建json模式

本文关键字:json 创建 模式 字符串 对象 | 更新日期: 2023-09-27 18:04:25

我正在评估来自NewtonSoft和来自GitHub的NJsonSchema的Json.Net.Schema,我无法弄清楚如何从JSON对象创建JSON模式。我希望它的工作原理完全像这个网站:http://jsonschema.net/#/

我在找什么

string json = @"{""Name"": ""Bill"",""Age"": 51,""IsTall"": true}";
var jsonSchemaRepresentation = GetSchemaFromJsonObject(json);

我希望在jsonSchemaRepresentation变量中有一个有效的JSON模式。有人知道我该怎么做吗?

提前感谢!

如何从json对象字符串中创建json模式

当前版本的NJsonSchema支持这个特性:

SampleJsonSchemaGenerator从样例JSON数据生成一个JSON Schema。

var schema = JsonSchema4.FromSampleJson("...");
var schemaJson = schema.ToJson();

…或者创建一个SampleJsonSchemaGenerator实例并调用Generate("...")方法。

实际上您提到的两个库都不支持这样的功能

如果你打算自己实现它,那么你将不得不解析你的JSON,递归地迭代它,并根据你刚刚迭代的类型添加一个新的模式。

还有一些其他的工具(在其他语言中,如python)可能是一个灵感,这可能会让你开始。

提交给函数的字符串格式不正确。试试这个(将'{'添加到字符串的开头,'}'添加到末尾):

string json = @"{
""Name"": ""Bill"",
""Age"": 51,
""IsTall"": true
}";
var jsonSchemaRepresentation = GetSchemaFromJsonObject(json);