List> serialize to JObject - C#
Формулировка задачи:
Добрый день. Еть следующая задачка.
имеется список
полный данными из JSON
выполнено следующим образом
так вот data, после некоторых изменений надо загнать обратно в json, не нарушив структуру. подскажите пожалуйста.
1 значение, которое должно быть ключем, идет как обычная составляющая
а надо чтобы title был ключем
List<Dictionary<string, string>> data = new List<Dictionary<string, string>>();
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);
}
попытался, попытка не увенчалась успехом
string json = JsonConvert.SerializeObject(data, new KeyValuePairConverter());
File.WriteAllText(@"blahblah.json", json);
получается вот такое
[
{
"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"
}
]{
"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);
}
}
}