2013-04-03 86 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); 
}