2013-04-03 163 views

回答

14
+0

但它只会允许生成带有必需属性的json模式,而不是其他像maxLength,模式(正则表达式来验证电子邮件)等,所以我在寻找为更通用的方式。 –

+2

最新版本的Json.NET Schema支持数据注释属性。他们让你指定maxLength,最大,模式,格式等 –

+3

任何非商业许可证选项呢?想从c#类生成json模式。 JSON.net对于超过10名员工的公司是商业的,并且无法通过为我的一分钱一分钱的工作获得许可证的麻烦;-) – nishant

1

对于那些谁来自谷歌在这里降落寻找反向
(生成JSON的C#类) - 我用这些罚款的在线工具:

JSON:
http://json2csharp.com/
(来源:http://jsonclassgenerator.codeplex.com/

XML:
http://xmltocsharp.azurewebsites.net/
(来源:https://github.com/msyoung/XmlToCSharp

+0

从反向jsonclassgenerator工具是伟大的。另一个简单的选择是在Visual Studio中使用编辑 - >选择性粘贴 - >粘贴JSON作为类。这也创建了一个类!非常方便有时。 – sandiejat

+0

@sandiejat:很高兴知道。不知道自VS的哪个版本。 –

+0

似乎是2012.2 RC带来的。而我们正在忙着做这个难题! :) https://blogs.msdn.microsoft.com/webdev/2012/12/18/paste-json-as-classes-in-asp-net-and-web-tools-2012-2-rc/ – sandiejat

11

支持生成JSON模式V4是NJsonSchema另一种选择:

var schema = JsonSchema4.FromType<Person>(); 
var schemaJson = schema.ToJson(); 

库可以经由NuGet安装。

更新NJsonSchema v9.4.3 +:

using NJsonSchema; 

var schema = await JsonSchema4.FromTypeAsync<Person>(); 
var schemaJson = schema.ToJson(); 
+0

FromType是一个扩展吗?在版本NJsonSchema 9.4.3中找不到方法。更好的是,一个packages.config列表和使用哪些命名空间将不胜感激。 – granadaCoder

+0

面向未来的读者。我能够使用这篇文章的日期来匹配一个包的版本。这是我的packages.config。请注意,相对于可用于NJsonSchema的所有软件包,这是一个非常旧的版本。 granadaCoder

+0

考虑将您的示例更新到软件包的最新版本。但是留下两个代码示例,并标识正确的包。谢谢。 – granadaCoder

0
JsonSchemaGenerator js = new JsonSchemaGenerator(); 
var schema = js.Generate(typeof(Person)); 
schema.Title = typeof(Person).Name; 
using (StreamWriter fileWriter = File.CreateText(filePath)) 
{ 
     fileWriter.WriteLine(schema); 
}