2016-07-31 9 views
0

Ich habe eine Klasse Letter:Json.NET erstellen Schema für Wörterbuch

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;} 
} 

Und ich habe JSON-Datei:

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

Vorerst i deserialisieren json mit Json.NET von NewtonSoft wie folgt aus:

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

So kann ich auf Werte wie folgt verweisen: alphabet["A"]

Jetzt möchte ich überprüfen, ist jsonString, die ich deserialize ist gültig.

Ich habe einige Beispiele gefunden, wie man JsonSchema aus der Datei liest, oder wie man es im Code erzeugt. Aber ich kann nicht herausfinden, wie Shema für mein Beispiel von JSON-Datei generieren.

Kann mir jemand helfen?

P.S.

Für jetzt mache ich es so. Ist das der beste Weg?

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

warum nicht nur 'var schema = generator.Generate (typeof (Dictionary ))'? –

+0

@AlekseyL. Bitte schreibe eine Antwort auf diese Frage, damit ich sie als richtige Antwort überprüfen kann. Ich denke, wenn Benutzer seinen JSON nicht nur mit Alphabetsymbolen definieren, war es richtiger dann erste Schlussfolgerung – gek0n

Antwort

3

Sie können ein Schema aus dem Typ generieren, zu dem Sie das Deserialisieren durchführen. Zum Beispiel:

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

Und ich rebau meine JSON-Datei. Ich denke, die Verwendung von: '" p1 ": {" a ": []," b ": [], ...}' ist Übereinstimmung besser. Danke für die Hilfe – gek0n

Verwandte Themen