2013-03-03 9 views
8

Mam niektóre JSON tak (serializes ze słownika):Cofnięcie JSON do słownika przy użyciu LINQ do JSON

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

i chciałby używać Json.NET za JSON do LINQ deserializować go do słownika.

próbowałem coś różne rzeczy:

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

Ale to zgłasza wyjątek jak poniżej:

System.InvalidCastException
Nie można rzucać Newtonsoft.Json.Linq.JObject do Newtonsoft. Json.Linq.JToken

Próbowałem również:

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

Ale nie mogę wymyślić, jak przetworzyć elementy w słowniku.

Odpowiedz

14

ten powinien pracować dla Ciebie:

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

powinieneś nam sposób na JToken zamiast ToObject . –

+0

Masz całkowitą rację, zredagowałem odpowiedź, aby to odzwierciedlić. – JoshVarty