Можно ли использовать 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"]);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д