26

JSON テキストを解析して作成した JObject (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 オブジェクト型を特定できませんでした。

4

2 に答える 2

66

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

json["dict"] = JObject.FromObject(dict);
于 2013-04-23T14:06:33.090 に答える
-6

あなたが使用できる必死の「ハック」があります。それはきれいではありません(同じことを2回行う)が、機能します:)

  json["dict"] = JObject.Parse(JsonConvert.SerializeObject(dict));
于 2013-03-25T19:55:44.467 に答える