2016-02-06 14 views
7

Ich habe folgendes Problem: Ich habe eine JSON-Datei, dieDeserialize JSON mit json.NET in C# dynamische

{ 
    "Path": { 
     "FirstPath": "/1/2/text()" 
    } 
} 

wie folgt aussieht Wenn ich diese JSON-Datei mit Newtonsoft wie diese

dynamic dyn = JObject.Parse(json); 
analysieren

oder diese

dynamic dyn = JsonConvert.DeserializeObject(json); 

ich ein dynamisches Objekt, das wie dieses

verwendet werden muss,
dyn.Path.FirstPath.Value 

Wie kann ich die Wertsachen loswerden? Alle meine Objekte in JSON sind eine Zeichenfolge. Ich will am Ende nicht immer ".Value" schreiben, wenn es nicht nötig ist.

Antwort

11

Ich testete dies mit Newtonsoft 8.0.2 und es funktioniert gut.

 dynamic dyn = JObject.Parse(json); 

     string value = dyn.Path.FirstPath; 

Wert sollte gleich /1/2/text() sein.

+0

Ja, aber wenn Sie genauer hinsehen, können Sie sehen, dass "Wert" keine Zeichenkette vom Typ "Newtonsoft.Json.Linq.JValue" ist. Wenn Sie "Wert" übernehmen und an eine Methode übergeben, die eine Zeichenfolge erwartet, erhalten Sie eine Ausnahme. Es funktioniert nur, wenn Sie "value.Value" schreiben. – Shamshiel

+0

Ersetzen Sie die "Var" durch "String" dann. Ich habe meine Antwort aktualisiert. –