Подтвердить что ты не робот

Как добавить словарь <string, string> в существующий JObject JSON.Net?

У меня есть JObject (с использованием JSON.Net), который я создал, анализируя некоторый текст JSON. Я непосредственно манипулирую, добавляя ключи на верхнем уровне этого 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

Большинство последних ошибок, с которыми я сталкиваюсь, следующие:

Не удалось определить тип объекта JSON для типа System.Collections.Generic.KeyValuePair`2 [System.String, System.String].

4b9b3361

Ответ 1

Я считаю, что вы ищете что-то вроде этого:

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

Ответ 2

Существует отчаянный "взлом", который вы можете использовать, это не очень хорошо (делает два раза то же самое), но он работает:)

  json["dict"] = JObject.Parse(JsonConvert.SerializeObject(dict));