List> serialize to JObject - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день. Еть следующая задачка. имеется список
Листинг программы
  1. List<Dictionary<string, string>> data = new List<Dictionary<string, string>>();
полный данными из JSON выполнено следующим образом
Листинг программы
  1. string filename = "translates.json";
  2. var s = File.ReadAllText(System.IO.Path.Combine(System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), filename));
  3. // parsing json
  4. var json = JObject.Parse(s);
  5. foreach (var obj in json.Properties())
  6. {
  7. var row = new Dictionary<string, string>(languages.Count + 1);
  8. row["title"] = obj.Name;
  9. foreach (var language in languages)
  10. {
  11. row[language] = obj.Value[language].ToString();
  12. }
  13. data.Add(row);
  14. }
так вот data, после некоторых изменений надо загнать обратно в json, не нарушив структуру. подскажите пожалуйста.
попытался, попытка не увенчалась успехом
Листинг программы
  1. string json = JsonConvert.SerializeObject(data, new KeyValuePairConverter());
  2. File.WriteAllText(@"blahblah.json", json);
1 значение, которое должно быть ключем, идет как обычная составляющая
получается вот такое
Листинг программы
  1. [
  2. {
  3. "title": "test",
  4. "en": "asdsadsadas",
  5. "ru": "123654789",
  6. "tr": "123654789"
  7. },
  8. {
  9. "title": "mama",
  10. "en": "Mama",
  11. "ru": "*Mama",
  12. "tr": "*Mama"
  13. },
  14. {
  15. "title": "get_some_desc",
  16. "en": "Get some desc",
  17. "ru": "*Get some desc",
  18. "tr": "*Get some desc"
  19. },
  20. {
  21. "title": "fraze_for_translate",
  22. "en": "Fraze for translate",
  23. "ru": "*Fraze for translate",
  24. "tr": "*Fraze for translate"
  25. }
  26. ]
а надо чтобы title был ключем
Листинг программы
  1. {
  2. "test":{
  3. "en": "asdsadsadas",
  4. "ru": "123654789",
  5. "tr": "123654789"
  6. },
  7. "mama":{
  8. "en":"Mama",
  9. "ru":"*Mama",
  10. "tr":"*Mama"
  11. },
  12. "get_some_desc":{
  13. "en":"Get some desc",
  14. "ru":"*Get some desc",
  15. "tr":"*Get some desc"
  16. },
  17. "fraze_for_translate":{
  18. "en":"Fraze for translate",
  19. "ru":"*Fraze for translate",
  20. "tr":"*Fraze for translate"
  21. }
  22. }

Решение задачи: «List> serialize to JObject»

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using Newtonsoft.Json;
  4.  
  5. class Program
  6. {
  7.     static void Main(string[] args)
  8.     {
  9.         string s = @"{
  10.  ""test"": {
  11.    ""en"": ""Test"",
  12.    ""ru"": ""*Test"",
  13.    ""tr"": ""*Test""
  14.  },
  15.  ""mama"": {
  16.    ""en"": ""Mama"",
  17.    ""ru"": ""*Mama"",
  18.    ""tr"": ""*Mama""
  19.  },
  20.  ""get_some_desc"": {
  21.    ""en"": ""Get some desc"",
  22.    ""ru"": ""*Get some desc"",
  23.    ""tr"": ""*Get some desc""
  24.  },
  25.  ""fraze_for_translate"": {
  26.    ""en"": ""Fraze for translate"",
  27.    ""ru"": ""*Fraze for translate"",
  28.    ""tr"": ""*Fraze for translate""
  29.  }
  30. }";
  31.  
  32.         var json = JsonConvert.DeserializeObject<Dictionary<string, Dictionary<string, string>>>(s);
  33.  
  34.         foreach (string key in json.Keys)
  35.         {
  36.             Console.WriteLine("Key = {0}", key);
  37.         }
  38.     }
  39. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут