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

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

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

У меня есть библиотека для "парсинга" JSON страницы, стыренная с http://json2csharp.com/#. Она выдает классы - скелеты для основы которая у меня есть. Получилось что там естественно всё вложено друг в друга:
Листинг программы
  1. public class Head
  2. {
  3. }
  4. public class Syn //Массив синонимов
  5. {
  6. public string text { get; set; }
  7. public string pos { get; set; }
  8. public string asp { get; set; } //совершенный\несовершенный вид
  9. public string gen { get; set; } //род
  10. }
  11. public class Mean //значения
  12. {
  13. public string text { get; set; }
  14. }
  15. public class Tr2
  16. {
  17. public string text { get; set; }
  18. }
  19. public class Ex
  20. {
  21. public string text { get; set; }
  22. public List<Tr2> tr { get; set; }
  23. }
  24. public class Tr //Массив переводов.
  25. {
  26. public string text { get; set; }
  27. public string pos { get; set; }
  28. public List<Syn> syn { get; set; }
  29. public List<Mean> mean { get; set; }
  30. public string asp { get; set; }
  31. public List<Ex> ex { get; set; }
  32. public string gen { get; set; } //Род существительного для тех языков, где это актуально (может отсутствовать).
  33. }
  34. public class Def //Массив словарных статей. В атрибуте ts может указываться транскрипция искомого слова
  35. {
  36. public string text { get; set; }
  37. public string pos { get; set; }
  38. public List<Tr> tr { get; set; }
  39. public string ts { get; set; }
  40. }
  41. public class RootObject
  42. {
  43. public Head head { get; set; }
  44. public List<Def> def { get; set; }
  45. }
Кое-как сделал вывод инфы через foreach:
Листинг программы
  1. translateWord.Text = resp.def[0].text + " [" + resp.def[0].ts + "]\n";
  2. foreach (var translate in resp.def[0].tr)
  3. {
  4. translateWord.SelectionFont = new Font(Control.DefaultFont, FontStyle.Bold);
  5. translateWord.AppendText(translate.text + ", ");
  6. // translateWord.Text += translate.text + ", ";
  7. if (translate.syn != null)
  8. foreach (var moreTr in translate.syn)
  9. {
  10.  
  11. translateWord.Text += moreTr.text + ", ";
  12. }
  13. translateWord.Text += "\nСинонимы: ";
  14. if (translate.mean != null)
  15. foreach (var synonims in translate.mean)
  16. {
  17. translateWord.Text += synonims.text + ", ";
  18. }
  19. translateWord.Text += "\nПримеры: ";
  20. if (translate.ex != null)
  21. foreach (var exempls in translate.ex)
  22. {
  23. if (exempls.tr.Count == 1)
  24. translateWord.Text += exempls.text + " - " + exempls.tr[0].text + ";\n";
  25. else
  26. translateWord.Text += "MORE\n";
  27. }
  28. }
Это получилось не очень очевидно. Ииииии вот мой вопрос: можно ли использовать для этого безобразия LINQ? Или как нибудь сразу присвоить то что нужно переменным.

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

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

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


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

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

14   голосов , оценка 3.786 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы