2016-07-31 27 views
0

創建模式我有一個類LetterJson.NET的字典

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文件:

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

現在我反序列化JSON與Json.NETNewtonSoft這樣的:

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

所以我可以參考這樣的值:alphabet["A"]

現在我想檢查,是jsonString,我想反序列化是有效的。

我發現了一些例子如何從文件中讀取JsonSchema,或者如何在代碼中生成它。但我找不到,如何爲我的json文件生成shema。

任何人都可以幫助我嗎?

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

相關問題