# מערך שיעור: JSON — System.Text.Json📋 מערך מרצה

משך: 1.5 שעות אקדמיות (68 דקות).

מטרת השיעור: הסטודנטים ידעו להמיר אובייקטים ל-JSON ובחזרה, ולשלב זאת עם שמירה לקובץ.

בסוף השיעור הסטודנטים צריכים: להשתמש ב-`Serialize`/`Deserialize<T>` על מחלקה מותאמת אישית, לשמור ולטעון JSON מקובץ, ולהסביר למה JSON עדיף על פורמט מומצא.

דגש קריטי: קשרו במפורש ל-REST APIs שיופיעו ביחידת ASP.NET Core — JSON הוא לא "עוד פורמט", הוא שפת התקשורת הסטנדרטית של כל שרת web מודרני.

---

## מהלך השיעור

| חלק בשיעור | משך | הערות ודגשים |
| --- | --- | --- |
| פתיחה וחיבור | 5 דקות | הראו ניסיון לשמור Student עם פורמט מומצא ("דנה,25") — מה עם פסיק בשם? |
| הבעיה: פורמט מומצא שברירי | 10 דקות | הדגישו מבנים מקוננים (List בתוך אובייקט) שקשה לייצג ידנית |
| הרעיון: Serialize | 15 דקות | JsonSerializer.Serialize על Student |
| הרעיון: Deserialize | 15 דקות | חזרה לאובייקט, הדגישו <T> מפורש |
| שילוב עם File I/O | 10 דקות | שמירה/טעינה לקובץ .json |
| תרגול מודרך | 13 דקות | תרגיל 1+2 |

---

## דגשים להעברת השיעור

- קשרו JSON קדימה ל-ASP.NET Core ("כל בקשה ותשובה מ-API תהיה ב-JSON — זה בדיוק מה שאתם רואים כאן") — עוגן חשוב להמשך הקורס.
- הראו את פלט ה-JSON עצמו (`Console.WriteLine(json)`) לפני שהוא נטען חזרה — חשוב שסטודנטים "יראו" את הפורמט הטקסטואלי בעצמם, לא רק יסמכו על שהוא "עובד מאחורי הקלעים".
- `WriteIndented = true` שווה להראות בקצרה — JSON קריא לבני אדם בפיתוח, קומפקטי (ברירת המחדל) לתקשורת אמיתית.

---

## מושגים

**JSON** — פורמט טקסט סטנדרטי לייצוג נתונים מובנים.
**Serialize** — אובייקט C# → מחרוזת JSON.
**Deserialize** — מחרוזת JSON → אובייקט C#.

---

## תרגיל חשיבה

**שאלת פתיחה:** "אם הייתם צריכים לשלוח נתוני `Student` (כולל רשימת ציונים) לשרת בחברה אחרת, שכתובה ב-Python לא ב-C# — איך הייתם עושים את זה בלי JSON?"

**מהלך:** הובילו לתובנה: בלי פורמט סטנדרטי, שתי השפות היו צריכות "להסכים" על פורמט מומצא ולתחזק קוד פרסור מותאם בשני הצדדים. JSON פותר את זה בדיוק כי הוא **לא תלוי-שפה** — Python, JavaScript, C#, Java — כולם יודעים לקרוא ולכתוב אותו זהה.

**מה המרצה מראה בסוף:** הראו את קובץ ה-JSON שנוצר (`student.json`) בעורך טקסט רגיל — הדגישו שהוא קריא לבני אדם וגם למכונה, לא "קוד בינארי מוצפן". אם אפשר, הראו גם דוגמה קצרה איך אותו JSON נראה כשנטען בפייתון/JavaScript (`json.loads`/`JSON.parse`) כדי לחזק את "אותו פורמט, כל שפה".
