2013-03-03 79 views
8

我有一些JSON像這樣(從字典連載):反序列化JSON使用LINQ字典JSON

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

,並想用JSON.NET的JSON到LINQ將其反序列化到字典中。

我已經嘗試一些不同的東西:

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

但這拋出這樣一個異常:

System.InvalidCastException
不能施放Newtonsoft.Json.Linq.JObject到Newtonsoft。 Json.Linq.JToken

我也試過了:

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

但後來我找不出如何處理元素到字典中。

回答

14

這應該爲你工作:

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

您應該我們JToken的ToObject 方法來代替。 – 2013-03-04 02:47:22

+0

你是對的,我已經編輯了答案來反映這一點。 – JoshVarty 2013-03-04 03:42:34