Как спарсить значения из такого JSON?

ftbwork10

Client
Регистрация
29.05.2017
Сообщения
447
Благодарностей
700
Баллы
93
есть json

JSON:
{ "translation": { "af": { "name": "Африкаанс", "nativeName": "Afrikaans", "nameMe": "af", "dir": "ltr" }, "am": { "name": "Амхарский", "nativeName": "አማርኛ", "dir": "ltr" }, "ar": { "name": "Арабский", "nativeName": "العربية", "nameMe": "ar", "dir": "rtl" }, "as": { "name": "Ассамский", "nativeName": "অসমীয়া", "dir": "ltr" }, "az": { "name": "Азербайджанский", "nativeName": "Azərbaycan", "nameMe": "az", "dir": "ltr" }, "ba": { "name": "Bashkir", "nativeName": "Bashkir", "dir": "ltr" }, "bg": { "name": "Болгарский", "nativeName": "Български", "nameMe": "bg", "dir": "ltr" } } }
Есть переменная Lang ее значение например "Африкаанс"

вопрос, как мне получить с json
{ "af": { "name": "Африкаанс", "nativeName": "Afrikaans", "nameMe": "af", "dir": "ltr" }

или получить список
af
Африкаанс
Afrikaans
nameMe
af
 
Регистрация
05.06.2019
Сообщения
570
Благодарностей
454
Баллы
63
C#:
var jsonData = Global.ZennoLab.Json.Linq.JObject.Parse(project.Variables["json"].Value);
return jsonData["translation"]["af"];
 
  • Спасибо
Реакции: djaga и ftbwork10

ftbwork10

Client
Регистрация
29.05.2017
Сообщения
447
Благодарностей
700
Баллы
93

qzen4i

Client
Регистрация
01.05.2014
Сообщения
1 408
Благодарностей
314
Баллы
83
Регистрация
05.06.2019
Сообщения
570
Благодарностей
454
Баллы
63
["af"]; а если это значение не известно? его можно спарсить?
1. POCO
C#:
public class Translation
    {
        public string Name { get; set; }
        public string NativeName { get; set; }
        public string NameMe { get; set; }
        public string Dir { get; set; }
    }
2. Реализация
C#:
var jsonData = Global.ZennoLab.Json.Linq.JObject.Parse(project.Variables["json"].Value);

return Global.ZennoLab.Json.JsonConvert.DeserializeObject<Dictionary<string, Translation>>(jsonData["translation"].ToString()).Values.Where(i => i.Name == "Африкаанс").FirstOrDefault().NameMe;
 
  • Спасибо
Реакции: ftbwork10

ftbwork10

Client
Регистрация
29.05.2017
Сообщения
447
Благодарностей
700
Баллы
93
1. POCO
C#:
public class Translation
    {
        public string Name { get; set; }
        public string NativeName { get; set; }
        public string NameMe { get; set; }
        public string Dir { get; set; }
    }
2. Реализация
C#:
var jsonData = Global.ZennoLab.Json.Linq.JObject.Parse(project.Variables["json"].Value);

return Global.ZennoLab.Json.JsonConvert.DeserializeObject<Dictionary<string, Translation>>(jsonData["translation"].ToString()).Values.Where(i => i.Name == "Африкаанс").FirstOrDefault().NameMe;
1. POCO
C#:
public class Translation
    {
        public string Name { get; set; }
        public string NativeName { get; set; }
        public string NameMe { get; set; }
        public string Dir { get; set; }
    }
2. Реализация
C#:
var jsonData = Global.ZennoLab.Json.Linq.JObject.Parse(project.Variables["json"].Value);

return Global.ZennoLab.Json.JsonConvert.DeserializeObject<Dictionary<string, Translation>>(jsonData["translation"].ToString()).Values.Where(i => i.Name == "Африкаанс").FirstOrDefault().NameMe;
Компиляция кода Ошибка в действии "CS0246" "The type or namespace name 'Translation' could not be found (are you missing a using directive or an assembly reference?)". [Строка: 3; Cтолбец: 78]
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 787
Благодарностей
2 453
Баллы
113
есть json

JSON:
{ "translation": { "af": { "name": "Африкаанс", "nativeName": "Afrikaans", "nameMe": "af", "dir": "ltr" }, "am": { "name": "Амхарский", "nativeName": "አማርኛ", "dir": "ltr" }, "ar": { "name": "Арабский", "nativeName": "العربية", "nameMe": "ar", "dir": "rtl" }, "as": { "name": "Ассамский", "nativeName": "অসমীয়া", "dir": "ltr" }, "az": { "name": "Азербайджанский", "nativeName": "Azərbaycan", "nameMe": "az", "dir": "ltr" }, "ba": { "name": "Bashkir", "nativeName": "Bashkir", "dir": "ltr" }, "bg": { "name": "Болгарский", "nativeName": "Български", "nameMe": "bg", "dir": "ltr" } } }
Есть переменная Lang ее значение например "Африкаанс"

вопрос, как мне получить с json
{ "af": { "name": "Африкаанс", "nativeName": "Afrikaans", "nameMe": "af", "dir": "ltr" }
C#:
string json = project.Variables["json"].Value;
string lang = project.Variables["Lang"].Value;
project.Json.FromString(json);

List<string> first_level = project.Json.GetMembersList();
string tr = first_level.First(); // translate
List<string> all = project.Json.GetMember(tr).GetMembersList(); // lands

foreach(string line in all) {
    if(project.Json.GetMember(tr).GetMember(line).name == lang)    {
        var data = Global.ZennoLab.Json.JsonConvert.DeserializeObject<dynamic>(project.Json.GetMember(tr).GetMember(line).ToString());
        return Global.ZennoLab.Json.JsonConvert.SerializeObject(new{line = data}).Replace("line", line);
    }
}
throw new Exception("Не найдено...");
или получить список
af
Африкаанс
Afrikaans
nameMe
af
C#:
string json = project.Variables["json"].Value;
string lang = project.Variables["Lang"].Value;
project.Json.FromString(json);

List<string> first_level = project.Json.GetMembersList();
string tr = first_level.First(); // translate
List<string> all = project.Json.GetMember(tr).GetMembersList(); // lands

foreach(string line in all) {
    if(project.Json.GetMember(tr).GetMember(line).name == lang)    {
        List<string> items = project.Json.GetMember(tr).GetMember(line).GetMembersList(); // lands
        List<string> out_list = new List<string>();
        out_list.Add(line);
        
        foreach(string item in items) {
            string s = project.Json.GetMember(tr).GetMember(line).GetMember(item);
            out_list.Add(s);
        }
        return string.Join(Environment.NewLine, out_list);
        
    }
}
throw new Exception("Не найдено...");
 
  • Спасибо
Реакции: ftbwork10 и djaga
Регистрация
05.06.2019
Сообщения
570
Благодарностей
454
Баллы
63
Компиляция кода Ошибка в действии "CS0246" "The type or namespace name 'Translation' could not be found (are you missing a using directive or an assembly reference?)". [Строка: 3; Cтолбец: 78]
в общий код надо добавить POCO
 
Регистрация
20.02.2019
Сообщения
292
Благодарностей
35
Баллы
28
Добрый день!
Какое выражение тут нужно написать, чтобы распарсились объекты у которых есть "mts (BY)" например.
Есть json с данными:

{
"status": "ok",
"geo_Operator_list": {
"564": {
"geoid": "564",
"geo_caption": "Болгария, София #3",
"count_free": {
"A1": "5"
}
},
"291": {
"geoid": "291",
"geo_caption": "Беларусь, Минск",
"count_free": {
"A1 (BY)": "6"
}
},
"316": {
"geoid": "316",
"geo_caption": "Беларусь, Гомель",
"count_free": {
"A1 (BY)": "1",
"mts (BY)": "5"
}
},
"364": {
"geoid": "364",
"geo_caption": "Беларусь, Гомель #2",
"count_free": {
"A1 (BY)": "4",
"Life (BY)": "1",
"mts (BY)": "2"
}
},
"406": {
"geoid": "406",
"geo_caption": "Беларусь, Гомель #3",
"count_free": {
"A1 (BY)": "4",
"mts (BY)": "2"
}
},
"429": {
"geoid": "429",
"geo_caption": "Беларусь, Могилев #2",
"count_free": {
"A1 (BY)": "4",
"mts (BY)": "2"
}
},
"448": {
"geoid": "448",
"geo_caption": "Беларусь, Брест",
"count_free": {
"A1 (BY)": "4",
"mts (BY)": "5"
}
},
"320": {
"geoid": "320",
"geo_caption": "Таиланд, Бангкок #2",
"count_free": {
"AIS (TH)": "2",
"dtac (TH)": "1"
}
},
"347": {
"geoid": "347",
"geo_caption": "Таиланд, Бангкок #3",
"count_free": {
"AIS (TH)": "2",
"dtac (TH)": "1"
}
},
"215": {
"geoid": "215",
"geo_caption": "Казахстан, Караганда",
"count_free": {
"altel(KZ)": "7",
"beeline(KZ)": "2"
}

Вот про этот фильтр:
110012
 

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)