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