2013-03-03 8 views
8

Ich habe einige JSON wie diese (aus einem Wörterbuch serialisiert):Deserialize JSON Zum Wörterbuch LINQ to JSON mit

{ 
    "Context": 
    { 
    "Test": "Test" 
    } 
} 

Und möchte JSON.NET JSON zu LINQ verwenden, um es in ein Wörterbuch deserialisieren.

Ich habe versucht, etwas anderes Dinge:

var obj = JObject.Parse(json); 
obj.Value<Dictionary<string, string>>("Context"); 

Aber das löst eine Ausnahme wie folgt aus:

System.InvalidCastException
Kann nicht Newtonsoft.Json.Linq.JObject zu Newtonsoft werfen. Json.Linq.JToken

Ich habe auch versucht:

var obj = JObject.Parse(json); 
var context = obj.Values("Context"); 

Aber dann kann ich nicht herausfinden, wie man die Elemente in ein Wörterbuch verarbeitet.

Antwort

14

Dies sollte für Sie arbeiten:

string json = "{\"Context\":{\"Test\": \"Test\"}}"; 
var obj = JObject.Parse(json); 
var dict = obj["Context"].ToObject<Dictionary<string,string>>(); 
+2

Sie sollten uns die ToObject Methode auf JToken statt. –

+0

Sie haben absolut Recht, ich habe die Antwort bearbeitet, um das zu reflektieren. – JoshVarty