Можно ли использовать LINQ для разбора JSON? - C#
Формулировка задачи:
У меня есть библиотека для "парсинга" JSON страницы, стыренная с http://json2csharp.com/#. Она выдает классы - скелеты для основы которая у меня есть. Получилось что там естественно всё вложено друг в друга:
Кое-как сделал вывод инфы через foreach:
Это получилось не очень очевидно. Ииииии вот мой вопрос: можно ли использовать для этого безобразия LINQ?
Или как нибудь сразу присвоить то что нужно переменным.
Листинг программы
- 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; }
- }
Листинг программы
- 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 для разбора JSON?»
textual
Листинг программы
- JObject parse = JObject.Parse(json);
- var defs = (JArray)parse["def"][0]["tr"][0]["syn"];
- var result = defs.Select(x => x["text"]);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д