Можно ли использовать LINQ для разбора JSON? - C#

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

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

У меня есть библиотека для "парсинга" JSON страницы, стыренная с http://json2csharp.com/#. Она выдает классы - скелеты для основы которая у меня есть. Получилось что там естественно всё вложено друг в друга:
    public class Head
    {
    }
 
    public class Syn //Массив синонимов
    {
        public string text { get; set; }
        public string pos { get; set; }
        public string asp { get; set; } //совершенный\несовершенный вид
        public string gen { get; set; } //род 
    }
 
    public class Mean //значения
    {
        public string text { get; set; }
    }
 
    public class Tr2
    {
        public string text { get; set; }
    }
 
    public class Ex
    {
        public string text { get; set; }
        public List<Tr2> tr { get; set; }
    }
 
    public class Tr //Массив переводов.
    {
        public string text { get; set; }
        public string pos { get; set; }
        public List<Syn> syn { get; set; }
        public List<Mean> mean { get; set; }
        public string asp { get; set; }
        public List<Ex> ex { get; set; }
        public string gen { get; set; } //Род существительного для тех языков, где это актуально (может отсутствовать).
 
    }
 
    public class Def //Массив словарных статей. В атрибуте ts может указываться транскрипция искомого слова     
    {
        public string text { get; set; }
        public string pos { get; set; }
        public List<Tr> tr { get; set; }
        public string ts { get; set; } 
    }
 
    public class RootObject
    {
        public Head head { get; set; }
        public List<Def> def { get; set; }
    }
Кое-как сделал вывод инфы через foreach:
             translateWord.Text = resp.def[0].text + " [" + resp.def[0].ts + "]\n";
                foreach (var translate in resp.def[0].tr)
                {
                    translateWord.SelectionFont = new Font(Control.DefaultFont, FontStyle.Bold);
                    translateWord.AppendText(translate.text + ", ");
                    // translateWord.Text += translate.text + ", ";
                    if (translate.syn != null)
                        foreach (var moreTr in translate.syn)
                        {

                            translateWord.Text += moreTr.text + ", ";
 
                        }
                    translateWord.Text += "\nСинонимы: ";
                    if (translate.mean != null)
                        foreach (var synonims in translate.mean)
                        {
                            translateWord.Text += synonims.text + ", ";
                        }
                    translateWord.Text += "\nПримеры: ";
                    if (translate.ex != null)
                        foreach (var exempls in translate.ex)
                        {
                            if (exempls.tr.Count == 1)
                                translateWord.Text += exempls.text + " - " + exempls.tr[0].text + ";\n";
                            else
                                translateWord.Text += "MORE\n";
                        }
 
                }
Это получилось не очень очевидно. Ииииии вот мой вопрос: можно ли использовать для этого безобразия LINQ? Или как нибудь сразу присвоить то что нужно переменным.

Решение задачи: «Можно ли использовать LINQ для разбора JSON?»

textual
Листинг программы
JObject parse = JObject.Parse(json);
 
            var defs = (JArray)parse["def"][0]["tr"][0]["syn"];
            var result = defs.Select(x => x["text"]);

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


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

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

14   голосов , оценка 3.786 из 5
Похожие ответы