2013-04-03 15 views

答えて

14

私たちが手動で行うことができるものJson.NETを使用することができます。この記事をチェックアウト:http://sixgun.wordpress.com/2012/02/09/using-json-net-to-generate-jsonschema/(JSONからC#クラスを生成する)逆
を探しグーグルからここに上陸人のために

+0

しかし、maxLength、パターン(電子メールを検証するための正規表現)などのようなものではなく、必要な属性を持つjsonスキーマを生成することしかできません。いくつかのより一般的な方法です。 –

+2

Json.NETスキーマの最新バージョンは、データ注釈属性をサポートしています。彼らはあなたがmaxLength、最大、パターン、形式などを指定することができます –

+3

そこに非商用ライセンスオプションはありますか? C#クラスからjsonスキーマを生成したい。 JSON.netは従業員10人以上の企業に商用であり、私のスズメな仕事のライセンスを手に入れることはできません;-) – nishant

1

- 私はそれらの罰金オンラインツールを使用します。

JSON:
http://json2csharp.com/
(出典:http://jsonclassgenerator.codeplex.com/

XML:
http://xmltocsharp.azurewebsites.net/
(出典:https://github.com/msyoung/XmlToCSharp

+0

逆jsonclassgeneratorツールからは素晴らしいです。別の簡単なオプションは、編集 - >形式を選択して貼り付け - > JSONをVisual Studioのクラスとして貼り付けることです。これもクラスを作成します!時にはかなり便利です。 – 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 Schemaの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で利用可能なすべてのパッケージに比べて非常に古いバージョンです。 >パッケージのid = "Newtonsoft.Json" version = "9.0.1" targetFramework = "net45" /> <パッケージID = " "version =" 1.10.5779.31942 "targetFramework =" net45 "/> granadaCoder

+0

あなたの例をパッケージの最新バージョンに更新することを検討してください。しかし、両方のコードサンプルを正しいパッケージのIDで残しておきます。ありがとう。 – 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); 
} 
関連する問題