【问题标题】:How to create json schema from json object string C#如何从 json 对象字符串 C# 创建 json 模式
【发布时间】:2017-01-04 05:29:15
【问题描述】:

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

我在寻找什么

string json = @"{""Name"": ""Bill"",""Age"": 51,""IsTall"": true}";

var jsonSchemaRepresentation = GetSchemaFromJsonObject(json);

我希望 jsonSchemaRepresentation 变量中有一个有效的 JSON 模式。有谁知道我如何做到这一点?

提前致谢!

【问题讨论】:

  • 你在jsonSchemaRepresentation 中最终得到了什么架构(即它有什么问题?)
  • 该方法是一种组合方法。我需要创建一个将 json 转换为相应 json 模式的方法。
  • 您找到解决方案了吗?
  • 我没有找到解决办法

标签: c# json json.net jsonschema


【解决方案1】:

NJsonSchema的当前版本supports this feature

SampleJsonSchemaGenerator 从示例 JSON 数据生成 JSON Schema。

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

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

【讨论】:

【解决方案2】:

其实你提到的这两个库都不支持这样的功能

如果您想自己实现它,那么您将不得不解析您的 JSON、iterate over it 递归和 add a new schema,具体取决于您刚刚迭代的类型。

还有一些其他工具(在其他语言中,如 python)可能是一种灵感,this 可能会帮助您入门。

【讨论】:

【解决方案3】:

您提交给函数的字符串格式不正确。试试这个(在字符串的开头添加“{”,在结尾添加“}”):

string json = @"{
""Name"": ""Bill"",
""Age"": 51,
""IsTall"": true
}";

var jsonSchemaRepresentation = GetSchemaFromJsonObject(json);

【讨论】:

  • 抱歉,我的字符串输入有误。我有正确的字符串,感谢您发布此内容。我有一个有效的 json 字符串,需要一个有效的 json 模式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 2011-03-08
  • 1970-01-01
  • 2023-03-22
  • 2022-07-18
相关资源
最近更新 更多