2013-03-06 15 views
10

JSONテキストを解析して作成したJObject(JSON.Netを使用)があります。私はこの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に変換したり、JSONテキストとして.NETオブジェクトをシリアル化を使用して記述しているようです。

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 

を私が遭遇した最新のエラーのほとんどは、次のとおりです:

または

は、私はこれらを試したし、何も働いていない...複雑なオブジェクトで物事のすべての種類を行うには、いくつかの空想のLINQ文を使用して

JSONオブジェクトタイプをSystem.Collections.Generic.KeyValuePair`2 [System.String、System.String]タイプで特定できませんでした。

答えて

24

私はあなたがこのような何かを探していると信じています:

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

これは正解です – automagic

-2

あなたが使用することができ必死「ハック」は、それが(2回同じことをやって)きれいではありませんが、それは動作しますが、あります:)

json["dict"] = JObject.Parse(JsonConvert.SerializeObject(dict)); 
関連する問題