List> serialize to JObject - C#

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

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

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

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

textual
Листинг программы
using System;
using System.Collections.Generic;
using Newtonsoft.Json;
 
class Program
{
    static void Main(string[] args)
    {
        string s = @"{
  ""test"": {
    ""en"": ""Test"",
    ""ru"": ""*Test"",
    ""tr"": ""*Test""
  },
  ""mama"": {
    ""en"": ""Mama"",
    ""ru"": ""*Mama"",
    ""tr"": ""*Mama""
  },
  ""get_some_desc"": {
    ""en"": ""Get some desc"",
    ""ru"": ""*Get some desc"",
    ""tr"": ""*Get some desc""
  },
  ""fraze_for_translate"": {
    ""en"": ""Fraze for translate"",
    ""ru"": ""*Fraze for translate"",
    ""tr"": ""*Fraze for translate""
  }
}";
 
        var json = JsonConvert.DeserializeObject<Dictionary<string, Dictionary<string, string>>>(s);
 
        foreach (string key in json.Keys)
        {
            Console.WriteLine("Key = {0}", key);
        }
    }
}

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


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

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

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