Задача · данни · C# (или друг език)

От HTML към JSON

Страницата на нашия профил, kartsov.com/inf, е написана на ръка. Превърни я в данни: програма, която я сваля, извлича всички списъци и ги записва като JSON. После от този JSON ще строим страницата с JavaScript, а по-късно и база данни.

ЗащоСега списъкът със задачи живее само в HTML. Щом стане данни, от него могат да се правят страница, търсачка, статистика, таблица в база данни.
Какво тренираHTTP заявки, структура на HTML документа (DOM), проектиране на данни, JSON, кодировки.
РезултатФайл zadachi-spisak.json, който учителят качва в сайта и зарежда с JavaScript.

Правила

Схемата

Един раздел = едно заглавие (h3 или h4) със списъка след него. Пример с един раздел и един елемент:

{
  "title": "Профил Информатика",
  "subtitle": "Примери, задачи, първи стъпки в кода",
  "sections": [
    {
      "title": "Първи стъпки в Javascript",
      "level": 3,
      "ordered": true,
      "start": 3,
      "items": [
        {
          "number": 3,
          "text": "Сняг в браузъра",
          "url": "https://www.kartsov.com/inf/snqg_stranica_s_copy.html",
          "type": "html",
          "external": false
        }
      ]
    }
  ]
}
ПолеЗначение
level3 за h3, 4 за h4
orderedtrue за ol, false за ul
startот кое число започва номерацията; null при ul
numberномерът, който виждаш на екрана пред елемента; null при ul
urlпълен адрес, винаги с https://
type"pdf" или "html", според адреса
externaltrue, ако връзката води извън kartsov.com/inf

Етапи

1

Свали страницата

С HttpClient свали страницата и я запиши във файл. Отвори файла и провери, че кирилицата се чете.

Готово, когато: ако няма интернет или адресът е грешен, програмата казва това с разбираемо съобщение, а не се срива.

2

Извлечи разделите

3

Запиши JSON

Използвай System.Text.Json с отстъпи, за да се чете лесно от човек.

Капан: по подразбиране .NET записва кирилицата като \u041F\u0440.... Това е валиден JSON, но нечетим. Намери настройката, която записва буквите такива, каквито са.

Готово, когато: файлът се отваря с JSON.parse в конзолата на браузъра без грешка.

4

Провери се

Програмата отпечатва кратък отчет, който можеш да сравниш със страницата с очите си:

Раздели: …
Елементи общо: …
  [h3] Блоково програмиране          ol  1–2
  [h3] Първи стъпки в Javascript     ol  3–6
  ...
PDF файлове: …   Външни връзки: …

Готово, когато: номерата в отчета съвпадат с номерата, които браузърът показва на страницата.

5

Обратният път

Направи HTML страница, която зарежда JSON файла с fetch и сама строи заглавията и списъците.

Капан: ако отвориш страницата с двоен клик (file://), fetch няма да работи. Защо? Отвори я през Live Server във VSCode.

Готово, когато: новата страница изглежда като оригиналната по съдържание и номерация.

★ 6

Какво ново?

Пусни програмата пак след седмица. Добави режим --razlika, който сравнява новия JSON със стария и казва кои задачи са добавени, премахнати или преименувани.

★ 7

Към базата данни

Скоро минаваме към SQL. Помисли как тези данни изглеждат като таблици: колко таблици трябват и как се свързват разделите с елементите? Напиши CREATE TABLE за тях и генерирай от JSON-а INSERT заявките.