2016-07-31 12 views
0

のスキーマをJson.NETを作成します。私はこのようなNewtonSoftからJson.NETでJSONをデシリアライズ今の私はクラス<code>Letter</code>持っている辞書

{ 
    "A": 
    { 
     "p1": "", 
     "p2": "", 
     "l1": ["", "", ..., ""], 
     "l2": ["", "", ..., ""] 
    } 
    "B": {...} 
    ... 
} 

public class Letter 
{ 
    public string p1 {get; set;} 
    public string p2 {get; set;} 
    public List<string> l1 {get; set;} 
    public List<string> l2 {get; set;} 
} 

を、私はJSONファイルを持っています

var alphabet = JsonConvert.DeserializeObject<Dictionary<char, Letter>>(jsonString); 

私はこのような値を参照できます:alphabet["A"]

今、確認したいのですが、デシリアライズしたいjsonStringが有効です。

ファイルからJsonSchemaを読み取る方法や、コードで生成する方法の例がいくつか見つかりました。しかし、私はjsonファイルの私の例のためにシーマを生成する方法を見つけることができません。

誰でも手伝ってもらえますか?

P.S.

今のところ私はこれを好きです。これは最善の方法ですか?

... 
var schemaGenerator = new JSchemaGenerator(); 
var schemaForLetter = schemaGenerator.Generate(typeof (Letter)); 
var schema = new JSchema 
{ 
    Type = JSchemaType.Object, 
    Properties = 
    { 
     { "A", schemaForLetter }, 
     { "B", schemaForLetter }, 
     ... 
    } 
} 
... 
+0

「var schema = generator.Generate(typeof(Dictionary ))」とは何ですか? –

+0

@AlekseyL。この質問への回答を書いてください、私は正解としてそ​​れを確認することができます。 私は彼のjsonをアルファベット記号で定義するだけではなく、最初の結論がもっと正しいと思います。 – gek0n

答えて

3

デシリアライズするタイプからスキーマを生成できます。たとえば、次のようになります。

var schema = generator.Generate(typeof(Dictionary<string, Letter>)) 
+1

そして私はjsonファイルを再構築します。私は、 '' p1 '':{"a":[]、 "b":[]、...} 'の方がより良くマッチしていると思います。手伝ってくれてありがとう – gek0n

関連する問題