2016-11-22 3 views
1

Hier ist der kleine Ausschnitt:Json.Net: JSchema zu Jtoken Umwandlung Ausgabe

foreach (KeyValuePair<string, JSchema> pair in dict) 
{ 
    JToken token = pair.Value; 
    string path = token.Path; 
    ...  
} 

JSchema Klasse V2.0.0.0 enthält impliziten Operator, einfache Konvertierung von Typen zur Verfügung stellt.

public static implicit operator JToken (
    JSchema s 
) 

JSchema Objekt kann, enthält etwas wie folgt aus:

{ 
    "title": "Массив предупреждений", 
    "type": "array", 
    "items": { 
    "title": "Предупреждение", 
    "type": "object", 
    "additionalProperties": false, 
    "properties": { 
     "id": { 
     "title": "Уникальный идентификатор предупреждения", 
     "type": "string" 
     }, 
     "element": { 
     "title": "Идентификатор атрибута данных", 
     "description": "Идентификатор атрибута данных в запросе, с которым связано предупреждение, может отсутствовать, если такая связь не установлена.", 
     "type": "string" 
     }, 
     "title": { 
     "title": "Заголовок или название предупреждения", 
     "type": "string" 
     }, 
     "description": { 
     "title": "Описание или полный текст предупреждения", 
     "type": "string" 
     } 
    }, 
    "required": [ 
     "id", 
     "title" 
    ] 
    } 
}   

Aber Token Variable ist immer {} (leer). Was ist falsch?

+0

können Sie erklären, was Sie versuchen, weitere Hintergrundinformationen zu tun und bieten? – peval27

+0

Ich muss eine Pfadeigenschaft von Jschema obj lesen. Aber es ist intern in der Klasse JSchema. Also versuche ich, JToken-Objekt mit der öffentlichen Path-Eigenschaft zu erhalten. –

+0

Können Sie uns zeigen, was Jschema-Objekt enthält? – jambonick

Antwort

0

Ich dachte auch, dass die JToken Umwandlung ein JSON-Schema als ein JSON-Objekt behandeln würde. Da jedes JSON-Schema selbst JSON ist, ist diese Verwendung für uns sinnvoll. Jedoch

zeigt the implementation deutlich, dass die Umstellung auf JToken tatsächlich ein Objekt neue JSON erstellt, die mit dem aktuellen Schema verknüpft ist. In ähnlicher Weise greift die Umwandlung von JToken auf das zugeordnete Schema zu.

Persönlich finde ich diese Verwendung von Casts verwirrend.

Wir können es umgehen, indem erneut das Parsen das Schema als einfacher JSON:

var json = JObject.Parse(schema.ToString());