CSharp · Console
using System;
using System.Collections.Generic;
using System.Linq;
using Newtonsoft.Json;
class Program
{
static void Main(string[] args)
{
string input = @"{
""play_classic"": [
{ ""english"": ""PLAY CLASSIC"" },
{ ""spanish"": ""JUEGO CLÁSICO"" },
{ ""portuguese"": ""JUEGO CLÁSICO"" },
{ ""russian"": ""IGRAT' V KLASSICHESKUYU"" }
],
""play"": [
{ ""english"": ""PLAY"" },
{ ""spanish"": ""JUEGO"" },
{ ""portuguese"": ""JUEGO"" },
{ ""russian"": ""IGRAT'"" }
],
""classic"": [
{ ""english"": ""CLASSIC"" },
{ ""spanish"": ""CLÁSICO"" },
{ ""portuguese"": ""CLÁSICO"" },
{ ""russian"": ""KLASSICHESKUYU"" }
]
}";
var resultRaw = JsonConvert.DeserializeObject<Dictionary<string, List<Dictionary<string, string>>>>(input);
var resultFlattern = resultRaw.ToDictionary(
x => x.Key,
x=> x.Value.SelectMany(trd=> trd)
.ToDictionary(kvp=> kvp.Key, kvp=> kvp.Value)
);
// given the button play_classic and the langue "portuguese"
var buttonName="play_classic"; var language= "portuguese";
if(resultFlattern.TryGetValue(buttonName, out Dictionary<string, string> allTrads))
{
if(allTrads.TryGetValue(language, out string traduction)){
Console.WriteLine($"Traduction for button [{buttonName}] in [{language}] is : [{traduction}]") ;
}
else
{
Console.WriteLine($"Cant find tanslation for button : [{buttonName}] in [{language}]") ;
}
}
else{
Console.WriteLine($"Cant find tanslation for button : [{buttonName}]");
}
//Direct access:
Console.WriteLine($"Direct access : [{resultFlattern[buttonName][language]}]");
}
}