2013-03-06 53 views
10

我有一個JObject(使用JSON.Net),我通過解析一些JSON文本創建。我直接操作,在這個JObject的頂層添加鍵。我沒有問題,當我加入的值是一個字符串:如何將Dictionary <string,string>添加到現有的JSON.Net的JObject?

json["newkey"] = "New Value"; // works 

但我會被定罪,如果我能想出如何添加一個詞典,如:

Dictionary<string,string> dict = new Dictionary<string,string>(); 
dict["one"] = "1"; 
dict["two"] = "2"; 
json["dict"] = dict;   // fails 

我我做了相當多的搜索和閱讀JSON.Net文檔,但一切似乎都是將原因JSON文本導入JObject,或者使用序列化將.NET對象編寫爲JSON文本。或者使用一些花哨的LINQ語句做各種事情複雜對象...

我已經試過這些,沒有工作過:

json["dict"] = new JObject(dict); 
json["dict"] = new JObject((Dictionary<string,string>)dict); 
json["dict"] = new JArray(dict); // desperation sets in :) 
json["dict"] = (JObject)dict;  // please dear god let this work 

大多數我遇到的最新錯誤是:

無法確定類型爲System.Collections.Generic.KeyValuePair`2 [System.String,System.String]的JSON對象類型。

回答

24

我相信你正在尋找的東西是這樣的:

json["dict"] = JObject.FromObject(dict); 
+2

這是正確的答案 – automagic 2015-01-21 19:53:00

-2

有一種絕望的「黑客」,你可以用,它不漂亮(做兩次同樣的事情),但它的工作原理:)

json["dict"] = JObject.Parse(JsonConvert.SerializeObject(dict)); 
相關問題