PracticU

JSON

בלי כתוביותעם כתוביות
PracticU › קורס Javascript כולל JQuery › JSON
מילון מושגים:
צד שרת - החלק של היישום שרץ בשרת ואחראי על הלוגיקה, מסדי הנתונים והעיבוד שמאחורי הקלעים.
DOM - ייצוג עץ של מבנה דף HTML בזיכרון, שמאפשר לקוד לקרוא ולשנות את תוכן הדף ומבנהו.
RAM - זיכרון הגישה האקראית של המחשב, מהיר ונדיף, שבו נשמרים נתונים ותוכניות בזמן ריצתם.
Northwind - מסד נתונים לדוגמה של מיקרוסופט, המדמה חברת מסחר ומשמש ללימוד ולהדגמת שאילתות SQL.
אסינכרוני - אופן פעולה שבו פעולה ארוכה רצה ברקע והתוכנית ממשיכה בלי להמתין לה, ומטופלת כשתסתיים.
POST - שיטת HTTP לשליחת נתונים לשרת כדי ליצור או לעדכן משאב, למשל שליחת טופס.
AJAX - טכניקה שמאפשרת לדף אינטרנט לשלוח ולקבל נתונים מהשרת ברקע ולעדכן את התצוגה בלי לטעון מחדש.
OOP - תכנות מונחה עצמים: גישת פיתוח שמארגנת את הקוד סביב אובייקטים המאגדים נתונים ופעולות.

JSON

בשיעור זה אנו לומדים את פורמט JSON, קיצור של JavaScript Object Notation. אנו מכירים את התחביר להגדרת אובייקטים ומערכים ואת השילובים ביניהם, לומדים להפוך מחרוזת JSON לאובייקט בעזרת הפונקציה eval, משווים את JSON ל-XML, ובונים פרויקט מלא שמשלב אג'אקס, JSON, צד שרת עם Generic Handler, מחלקת Business Logic, טיפול בחריגות ופעולות DOM להצגת מוצרים לפי קטגוריה.
נושאי הסיכום המוצגים בשיעור:
1. מהו אובייקט בזיכרון: אובייקט הוא ישות חיה בזיכרון ה-RAM שמתארת ישות מסוימת, למשל תלמיד. כל הפרטים של אותו תלמיד, שם פרטי, שם משפחה, מערך ציונים, כתובת ותעודת זהות, מקובצים יחד כגוש אחד בזיכרון, כאשר כל פרט יושב בתא נפרד, ו-100 תלמידים הם 100 אובייקטים שונים שיכולים להיות במקומות שונים בזיכרון.
2. מהו JSON: JSON הוא תחביר שמאפשר להגדיר אובייקטים ומערכים בזיכרון, והוא אינו תלוי בשפת תכנות. המון שפות תומכות בו, וג'אווה סקריפט היא אחת מהן.
3. תחביר הגדרת אובייקט: אובייקט מוגדר בסוגריים מסולסלות, ובתוכן תאים שלכל אחד שם וערך. השם נכתב כשם רגיל בלי גרשיים, ואז נקודותיים, ואז הערך, שאם הוא מחרוזת מופיע בגרשיים, והתאים מופרדים בפסיקים. כך מגדירים למשל מכונית עם מניופקטור למבורגיני ומודל קונטאץ', ויוצרים שלושה אובייקטים של מכוניות.
4. גישה ושינוי ערכים: אחרי ההגדרה אפשר לגשת לתאים לפי השמות שלהם, למשל car1.model, להציג את הערך לפני שינוי ואחרי שינוי ולראות שהמודל השתנה מקונטאץ' לדיאבלו. אפשר גם להגדיר את שמות התאים בתוך גרשיים, ושתי השיטות עובדות, אם כי מעדיפים בלי גרשיים כי פחות קוד זה יותר טוב.
5. תחביר הגדרת מערך: מערך מוגדר בסוגריים מרובעות, ובתוכן הערכים מופרדים בפסיקים. אין חובה שכל הערכים יהיו מאותו סוג, ואפשר לשלב מספרים שלמים, מספרים עשרוניים ומחרוזות. ג'אווה סקריפט מזהה אוטומטית שזה מערך, מחזירה את האורך שלו ב-length, ואפשר לגשת לתאים לפי אינדקס המתחיל מ-0 ולסרוק את המערך בלולאה עד אורך המערך פחות אחד.
6. שילוב אובייקט ומערך: אובייקט יכול להכיל מערך ומערך יכול להכיל אובייקטים. באובייקט של סטודנט מגדירים first name, last name ו-grades, כאשר הציונים הם מערך שמוגדר כאילו היה ערך רגיל של אחד התאים, ואפשר להציג את שמות הסטודנט ואת כל מערך הציונים שלו.
7. מערך של אובייקטים: אפשר להגדיר מערך שמחזיק אובייקטים קיימים, כמו מערך cars שמכיל את car1, car2 ו-car3, ולרוץ עליו בלולאה ולהגיע לכל מכונית ולמאפיינים שלה. אפשר גם להגדיר את האובייקטים ישירות בתוך המערך: סוגריים מרובעות למערך ובתוכן סוגריים מסולסלות לכל אובייקט, כמו מערך books עם שלושה ספרים שלכל אחד bookName ו-price, וזה יכול להיות היררכיה ללא סוף של אובייקטים ומערכים זה בתוך זה.
8. הערכים האפשריים ב-JSON: בתוך אובייקט או מערך אפשר להכניס מחרוזת, מספר שלם, מספר עשרוני, ערך בוליאני true או false, ערך ריק null, אובייקט שלם שמוגדר בסוגריים מסולסלות או מערך שמוגדר בסוגריים מרובעות. את כל הערכים מציגים ומגיעים אליהם דרך שם המשתנה, ואת המערך שבתוך האובייקט סורקים בלולאה על פי אורכו.
9. הפונקציה eval: הפונקציה eval של ג'אווה סקריפט מקבלת מחרוזת של קוד ג'אווה סקריפט ומוציאה אותה לפועל כאילו היה סקריפט, והיא מסוגלת גם להפוך מחרוזת שמכילה ערכי JSON לאובייקט JSON אמיתי. בונים מחרוזת שמתארת אובייקט של אוגי פלצט עם כתובת ומערך טלפונים, וכאשר המחרוזת החיצונית מוגדרת בגרשיים, הערכים בתוכה יכולים להיות מוגדרים בגרש או בגרשיים עם בקסלאש לפניהם.
10. הפיכת מחרוזת לאובייקט: קוראים ל-eval עם המחרוזת כשהיא עטופה בסוגריים פותחים וסוגריים סוגרים, כלומר משרשרים סוגריים מסביב למחרוזת, אחרת תהיה שגיאת ריצה. התוצאה היא אובייקט ג'אווה סקריפט רגיל שאפשר לגשת אליו עם נקודה, להציג את השם הפרטי, שם המשפחה, הכתובת, ואפילו לגשת לטלפון השני כאילו היה מערך. הנקודה החשובה היא שאנו ניגשים לאובייקט ולא למחרוזת, כי התפקיד של המחרוזת היה רק להגיע מהשרת, מכיוון שהשרת מסוגל להביא מחרוזות ולא אובייקטים אמיתיים.
11. JSON מול XML: JSON מתאר מידע ואת הייצוג שלו, בדיוק כמו XML שמתאר מידע על ידי תגיות בצורה טקסטואלית, וגם XML נשלח בין שרת ללקוח ובין חברות. ההבדל הוא שב-JSON אין תגיות, ולכן המידע מצומצם יותר, תופס פחות זיכרון, מהיר יותר ופשוט יותר לקריאה ולפענוח.
12. הפרויקט המסכם: בונים פרויקט שמשלב את כל מה שלמדנו לאחרונה: אג'אקס, DOM, exception handling ו-JSON. מסד הנתונים Northwind מתאר יבוא ויצוא של מוצרי מזון מכל העולם, ואנחנו רוצים לבחור קטגוריה מהלקוח ולקבל מהשרת את כל המוצרים שלה, כאשר גם הקטגוריות וגם המוצרים מגיעים מהשרת באג'אקס בפורמט JSON.
13. עיצוב ה-UI וטעינה מדורגת: הדף הוא HTML נקי עם span לבחירת קטגוריה, select עם ה-id selCategories ותגית UL, קיצור של unordered list, עם ה-id ulProducts להצגת המוצרים. הדף נטען מהר מאוד כי הוא נקי, ורק אחרי הטעינה, באירוע onload, קוראים לפונקציה loadCategories שגולשת לשרת באג'אקס ומביאה את הקטגוריות. כך עובדת גם פייסבוק: הדף עולה מיד, ורק אחר כך המידע מתמלא מאחורי הקלעים, וזו חוויית גלישה מהירה ונוחה.
14. פרמטר הפעולה f: מכיוון שנבצע מהשרת כמה פעולות שונות, ביאור רשימת הקטגוריות וביאור מוצרים של קטגוריה, שולחים פרמטר בשם f, קיצור של function, שמציין לשרת מה בדיוק אנחנו רוצים. בבקשה הראשונה ערכו getCategoryNameAndID, והשרת יודע להחזיר את רשימת הקטגוריות עם קוד ושם לכל קטגוריה, כמחרוזת JSON.
15. בניית הבקשה האסינכרונית: מגדירים משתנה אג'אקס חדש מטיפוס XMLHttpRequest, קוראים ל-open בשיטת POST לדף API.ashx עם true לביצוע אסינכרוני, ומגדירים ארבעה headers: if-modified-since עם Date חדש כדי שכל פעם תשלח בקשה מחדש ולא ייעשה שימוש בקאש, content type של application/x-www-form-urlencoded כי שולחים פרמטרים, content length עם params.length, ו-connection עם close. מרשמים אירוע onReadyStateChange לפונקציה showCategories וקוראים ל-send עם הפרמטרים.
16. טיפול בתשובת הקטגוריות: ב-showCategories בודקים ש-readyState שווה 4, שמציין שהמידע חזר מהשרת ומוכן להתקבל, וש-status שווה 200 שמציין שאין שגיאה, אחרת מוצגת הודעת error עם הסטטוס. מקבלים את המידע מ-ajax.responseText, ממירים אותו לאובייקט עם eval עטוף בסוגריים, ומקבלים מערך categories שבו כל איבר הוא אובייקט עם categoryID ו-categoryName.
17. מילוי תיבת ה-select: הקטגוריות מוצגות בתיבת select, שלכל פריט בה יש טקסט שמוצג ו-value מאחורי הקלעים, ולכן כל קטגוריה צריכה שם וקוד. לכל קטגוריה יוצרים תגית option חדשה בעזרת document.createElement, מגדירים לה את ה-value מה-categoryID של הפריט במערך, את ה-innerHTML מה-categoryName, ומצרפים אותה ל-select בעזרת appendChild שלמדנו בעולם ה-DOM.
18. צד השרת עם מודל השכבות: בצד השרת מוסיפים Generic Handler בשם API שמכיל את הפונקציה ProcessRequest שמופעלת בכל פעולת לקוח. מבצעים switch על context.request.form במיקום f, ולפי הערך שהתקבל יודעים איזו פעולה לבצע. כיוון שלא נהוג לערבב את ה-API עם גישה למסדי נתונים, נשתמש בתבנית עיצוב של מודל השכבות, שבה הגישה למסד הנתונים נמצאת בשכבה נפרדת.
19. מחלקת Business Logic: בתיקיית app code מוסיפים מחלקה בשם Business Logic, שאחראית על הלוגיקה הקשורה למסדי הנתונים. בונים בה פונקציה בצורה הפשוטה ביותר שמחזירה מחרוזת בשם getJsonCategoryNameAndID, שגולשת למסד הנתונים, מביאה את המידע, הופכת אותו ל-JSON ומחזירה אותו, וכך ה-API פשוט קורא לה ומחזיר ללקוח את המחרוזת.
20. שליפת הנתונים ממסד הנתונים: משתמשים ברכיב SQL Data Adapter שמסוגל לגשת למסד הנתונים ולהביא מידע. מגדירים בו את פקודת ה-Select של CategoryID ו-CategoryName מטבלת Categories, את מחרוזת הקישור שמתארת שהשרת הוא נקודה sql express שהוא המחשב הנוכחי, הדאטאבייז הוא Northwind, ו-trusted connection true שמציין שאין שם משתמש וסיסמה. האדפטר ממלא אובייקט DataTable שמכיל את הטבלה השלמה.
21. בניית מחרוזת ה-JSON בשרת: המערך ב-JSON מתחיל בסוגריים מרובעות ומסתיים בסגירתן. רצים בלולאת foreach על כל data row בשורות הטבלה, ולכל רשומה משרשרים אובייקט JSON שמתחיל בסוגריים מסולסלות, עם categoryID נקודותיים והערך מה-row במיקום categoryID שאינו צריך גרשיים כי הוא מספר, פסיק, categoryName נקודותיים והערך מה-row במיקום categoryName שחייב גרשיים כי הוא מחרוזת, עם בקסלאש לפני כל גרשיים כי אנחנו כבר בתוך מחרוזת, ואז סגירת הסוגריים המסולסלות ופסיק בין האובייקטים.
22. הסרת הפסיק האחרון: לאחר הלולאה נוצר פסיק מיותר אחרי האובייקט האחרון, וצריך להוריד אותו כי בין ערכי המערך צריכים להיות פסיקים רק באמצע. קוראים ל-json.remove במיקום json.length פחות 1 כדי להסיר את התו האחרון, ורק אז משרשרים את סגירת הסוגריים המרובעות. שימו לב לא להוסיף רווח אחרי הפסיק, אחרת היינו צריכים להוריד שני תווים, וכך גם חוסכים מידע שעובר מהשרת ללקוח. ה-API יוצר אובייקט מטיפוס Business Logic, קורא לפונקציה וכותב את התוצאה ב-context.response.write.
23. טיפול בשגיאות ופונקציה inline: כאשר השרת מחזיר מידע שגוי, למשל כשהפרמטר f מנוטרל או שהדף אינו באוויר, מתקבלת מחרוזת ריקה, ופונקציית eval שמחויבת לקבל מחרוזת JSON תקינה גורמת לקריסה של syntax error. פותרים זאת בעטיפת כל המנגנון ב-try catch שמציג את ה-error עם err.message. בנוסף משלבים את שתי הפונקציות לאחת: במקום לרשום את שם הפונקציה באירוע onReadyStateChange כותבים את הפונקציה עצמה בתוך האירוע, פונקציה ללא שם שנקראת inline function, ואז אפשר גם להפוך את משתנה האג'אקס מגלובלי ללוקאלי כי הוא נמצא בשימוש רק בפונקציה אחת.
24. טעינת המוצרים לפי קטגוריה: נרשמים לאירוע onChange של ה-select וקוראים לפונקציה showProducts, שדומה לפונקציה הקודמת אך שולחת פרמטר שני בשם categoryID ששווה ל-value של תיבת ה-select, והפעולה שהיא מבקשת היא getProductsByCategory. בתשובה מקבלים מערך products, מנקים את ה-innerHTML של ה-unordered list לפני המילוי, ולכל מוצר יוצרים תגית li, קיצור של list item, שה-innerHTML שלה הוא שם המוצר מהמערך, ומצרפים אותה ל-unordered list ב-appendChild. בצד השרת מוסיפים case נוסף ל-switch, מקבלים את ה-categoryID מה-form, ממירים אותו ל-int עם Convert.ToInt32, וקוראים לפונקציית business logic חדשה שמבצעת Select ProductName From Products Where CategoryID שווה לפרמטר, ומחזירה מערך JSON של אובייקטים עם productName.
25. גישה סינכרונית מול אסינכרונית: אפשר היה לגשת לשרת פעם אחת בעליית הדף, לשמור את כל המוצרים במשתנה גלובלי וכשהמשתמש בוחר להציג לו משם בלי לגשת לשרת שוב, וזה טוב כשמדובר בכמות קטנה של נתונים. בחרנו בגישה של גלישה לשרת בכל בחירה כי היא מתאימה כשיש כמות גדולה של מידע שלא רוצים לשמור בזיכרון מלכתחילה, או כשרוצים בכל רגע את המידע העדכני ביותר, כמו במכירה פומבית שבה המחירים מתעדכנים כל הזמן. כדי שה-UI ייטען יחד עם הקטגוריות בלי האפקט הלא נעים, אפשר לשנות את הפרמטר השלישי ב-open ל-false ולבצע גלישה סינכרונית שממתינה שהמידע ייטען, במקום אסינכרונית שמאפשרת למשתמש להמשיך לעבוד תוך כדי.
בסיום השיעור למדנו את פורמט JSON והתחביר שלו לאובייקטים ולמערכים ולשילובים ביניהם, הפכנו מחרוזות JSON לאובייקטים בעזרת eval, השווינו את JSON ל-XML, ובנינו פרויקט מלא שמשלב אג'אקס, JSON, Generic Handler, מחלקת business logic לפי מודל השכבות, טיפול בחריגות ופעולות DOM, כאשר הנתונים עברו מהשרת בפורמט JSON, פוענחו בצד הלקוח והוצגו בלי רפרוש של הדף. תודה רבה, ולהתראות בשיעור הבא.
בשיעור הבא נעסוק בנושא OOP.
SR630HE
מילון מושגים:
קוד מקור - הקוד שמפתחים כותבים בשפת תכנות, לפני הידור, המגדיר את פעולת התוכנה.
Java - שפת תכנות עילית ומונחית עצמים, הרצה על מכונה וירטואלית (JVM) ומשמשת לפיתוח מגוון יישומים.

להורדת קוד מקור של כל הדוגמאות בקורס  JAVA SCRIPT למתחילים -לחץ כאן לתלמידי המכללה בלבד

להורדת קוד מקור של כל הדוגמאות בקורס  JAVA SCRIPT למתקדמים- לחץ כאן לתלמידי המכללה בלבד

פרקי ההרצאה: JSON

  1. 00:00

    מהו JSON ואובייקט

  2. 01:49

    הגדרת אובייקט ב-JSON

  3. 03:34

    גישה ושינוי ערכי אובייקט

  4. 07:22

    הגדרת מערך ב-JSON

  5. 10:48

    אובייקט המכיל מערך

  6. 13:51

    מערך של אובייקטים

תמלול ההרצאה: JSON

הטקסט המלא של הדקות הראשונות בהרצאה «JSON» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:01

    אנחנו מגיעים לדבר שנקרא ג'ייסון. ג'ייסון זה קיצור של JavaScript Object Notation. המילה Notation זה ציון, לציין משהו. Object, אובייקט שחי בזיכרון, ו-JavaScript, אנחנו כמובן יכולים לעשות את זה ב-JavaScript.

  2. 00:19

    אז בעצם, בואו ניזכר מה זה בעצם אובייקט. אובייקט זה ישות שחיה לנו בזיכרון, ומתארת ישות מסוימת. לדוגמה, תלמיד. מידע שאנחנו רוצים לגבי תלמיד אחד ויחיד כמובן צריך לשבת איפשהו בזיכרון, בזיכרון הר"מ של המחשב בדרך כלל, זיכרון קריאה מיידית או גישה מיידית והפרטים של האובייקט הזה של אותו תלמיד, בוא נניח שם

  3. 00:49

    פרטי מוישה, שם משפחה כהן ויש לו איזה שהם מערך ציונים, יש לו כתובת, יש לו תעודת זהות, כל הפרטים האלה אנחנו יודעים שהם מאוגדים במקום אחד בזיכרון בתאים תאים.

  4. 01:01

    כל פרט יושב בתא נפרד, לדוגמה השם הפרטי יושב בתא א', שם משפחה יושב בתא ב', מערך הציונים יושב בתא ג', שיש בו סך הכל מערך של ציונים, וכולם ביחד נמצאים כגוש אחד בזיכרון.

  5. 01:17

    וכל הגוש הזה נקרא אובייקט, אובייקט אחד ויחיד. אנחנו יכולים שיהיה לנו 100 תלמידים, אבל מידע של 100 תלמידים יישב ב-100 אובייקטים שונים, שכל אובייקט יכול להיות במקום אחר בזיכרון, אבל המידע שלו בדרך כלל מקובץ ביחד.

  6. 01:32

    אוקיי, אז מה זה ג'ייסון? ג'ייסון מאפשר להגדיר אובייקטים ומערכים בזיכרון, והוא לא תלוי בשפת תכנות. ישנם המון שפות תכנות שתומכות בג'ייסון, וג'אווה סקריפט היא אחת מהן.

  7. 01:49

    זאת אומרת שאני יכול בתחביר הזה, נוטיישן הכוונה לציון או תחביר, אני יכול בתחביר הזה של ג'ייסון להגדיר אובייקטים ולהגדיר מערכים.

  8. 02:01

    אז בואו נראה איך זה מתבצע. אז בואו נחליט שאנחנו רוצים להגדיר אובייקט שמתאר לנו מידע לגבי מכונית. אז קודם כל כמובן שצריך להיות לי את המשתנה. לדוגמה var car1.

  9. 02:17

    עכשיו אם אני רוצה להגדיר אובייקט בתחביר של ג'ייסון, אז אני צריך להשתמש בסוגריים מסולסלות. סוגריים מסולסלות מציינות שאני עכשיו מגדיר אובייקט.

  10. 02:33

    לאובייקט כמובן יש מספר תאים. לכל תא יש שם התא שאחר כך מאפשר לי להגיע למידע של התא דרך השם, ויש את הערך של התא. השם של התא פשוט נכתב כשם רגיל, לדוגמה מניופקטור.

  11. 02:51

    ואז אני רושם נקודותיים, ואז אני רושם את הערך שהוא יכול לבוא במספר צורות, כרגע אנחנו רואים שהוא יכול לבוא בגרשיים, כלומר מחרוזת.

  12. 03:05

    לאחר מכן אני רושם פסיק, ואז את התא השני, לדוגמה מודל. ויש לנו כרגע מכונית אחת שיש לה מניופקטור ומודל. מניופקטור למבורגיני מודל קונטאץ'.

  13. 03:28

    יש לי פה כרגע אובייקט אחד ויחיד שיש לו שני תאים לכל תא יש שם ויש ערך בתוכו. אני יכול כמובן אחר כך ללכת ולשנות את הערכים בהתאם לגישה לפי השמות.

  14. 03:41

    בואו ניצור עוד שני אובייקטים יש לנו כאן את פרארי דגם ספיידר יש לנו את פורשה ודגם ררה יש לי עכשיו שלושה אובייקטים בזיכרון שהגדרתי אותם בעזרת התחביר של ג'ייסון.

  15. 04:16

    אם עכשיו אני רושם car1 נקודה אני רואה שבין כל הפונקציות שיש לי יש לי כאן מניופקטור ומודל. אני יכול להגיע לדוגמה למודל ולשנות אותו. בואו נציג על ידי אלרט את car1 נקודה מניופקטור וcar1 נקודה מודל לפני השינוי ואחרי השינוי.

  16. 04:53

    בואו נפעיל את הכל עם לחצן כך שאנחנו נבדוק את האובייקטים value, ג'ייסון אובייקט יש לנו פה טסט ג'ייסון אובייקט ונשים את הכל בפונקציה בואו נריץ ואנחנו יכולים ללחוץ על הלחצן ולראות שיש לנו למבורגיני קונטאץ׳ לפני השינוי ויש לנו למבורגיני דיאבלו אחרי השינוי בעצם מה

  17. 05:51

    שעשינו כאן ויצרנו שלושה אובייקטים בג'ייסון הצגנו את הראשון שינינו דבר מה בראשון ושוב פעם הצגנו אותו כאשר כתבנו את הערכים של האובייקטים ראינו שכתבנו את שם הפרמטר או שם התא שהוא נמצא ללא גרשיים, לאחר מכן נקודותיים ולאחר מכן את הערך שאם הוא סטרינג הוא מופיע בגרשיים.

  18. 06:16

    אבל לפעמים אפשר לראות שגם את השם של התא אנחנו יכולים להגדיר בתוך גרשיים. בואו נעשה את אותו הדבר עבור car2. בואו נשנה פה בכל מקום לcar2 בכדי לראות שגם זה עובד.

  19. 06:50

    נחזור, נרפרש, נריץ. יש לנו בהתחלה את למבורגיני קונטאץ' ששינינו ללמבורגיני דיאבלו, ולאחר מכן יש לנו את פרארי ספיידר ששינו לפרארי דיאבלו, לא נורא, אבל אנחנו רואים שזה בעצם עובד גם כאשר השמות של התאים עטופים בגרשיים.

  20. 07:12

    אז לפעמים באתרים רואים שזאת השיטה להגדיר את שמות התאים, ולפעמים בלי גרשיים, אני אישית מעדיף בלי גרשיים, לפני שכמה שפחות קוד, יותר טוב.

  21. 07:26

    זה היה אובייקטים. אנחנו עוברים למערכים. ואם אנחנו רוצים לראות מערך, בואו נבנה פונקציה test.json.aray. נקרא לה מלחצן שני, יש לנו פה test.json.aray שקורא לפונקציה test.json.aray.

  22. 07:57

    אז מה התחביר ב-JSON בכדי להגדיר מערך? אז מערך כמובן קודם כל הוא מערך חד-ממדי. ואיך אנחנו בעצם מגדירים אותו? בואו נגדיר משתנה, לדוגמה Numbers, ונכניס לתוכו מערך בשביל להגדיר מערך ב-JSON אני משתמש לא בסוגריים מסוסלות אלא בסוגריים מרובעות ובתוכם אני רושם את הערכים מופרדים על ידי פסיקים כל הערכים שאני רוצה וכמובן שאני לא חייב שכולם יהיו מאותו סוג אני

  23. 08:33

    יכול שיהיה לי פה משתנה דאבל אני יכול שיהיה לי פה סטרינג אני יכול שיהיה לי כל דבר שאני רוצה להעלות על הדעת שאפשרי ב-JavaScript אנחנו בהמשך נראה בדיוק מה הדברים הנוספים שאפשר להגדיר כרגע הגדרתי מערך בואו נציג את האורך שלו.

  24. 08:56

    הרייז לנקס נאמברס ואנחנו רואים שג'אווה סקריפט אוטומטית קולטת שהדבר הזה זה מערך ונותנת לי לנקס. בואו נבדוק.

  25. 09:09

    נלחץ על הלחצן של טסט ג'ייסון הריי ואנחנו רואים שיש לנו 11 תאים במערך. אם אני רוצה להציג את הערכים השונים ואני יכול להציג אותם על ידי הצגה רגילה של ערכי מערך.

  26. 09:23

    לדוגמה בנאמברס 0 יש לנו 33 תאשר מערכים מתחילים מ-0. אז אם אני יציג את זה אז אני אראה בעצם שהאורך שלו זה 11 והמיקום הראשון מכיל את המספר 33.

  27. 09:51

    אם אני רוצה לסרוק את המערך אני כמובן יכול לסרוק בלולה הרגילה for i שווה 0 כל עוד i יותר קטן מ-numbers.length כמובן לא שווה ל-numbers.length מפני שאורך המערך זה סך כל התאים התא האחרון זה 1 פחות מבחינת אינדקס ואז אני יכול להגיע ל-alert בואו נבדוק את זה, יש לנו קודם כל האורך 11, נאמברס 33 ואנחנו מתחילים להציג אותם, את הערכים לפי הסדר במערך שלנו,

  28. 10:35

    66, 3, מינוס 2, 6.7, הלו, כמובן אנחנו יכולים לראות גם סטרינגים פה וזה בעצם הציון בג'ייסון להגדרת מערך. עכשיו האם אובייקט ומערך יכולים להשתלב ביחד?

  29. 10:52

    כלומר האם אובייקט יכול להכיל בתוכו מערך והאם מערך יכול להכיל בתוכו אובייקט? אז התשובה היא כן, אובייקט יכול להכיל מערך ומערך יכול להכיל אובייקטים.

  30. 11:04

    בואו נסתכל רגע איך זה יכול להיות. אז בואו נגדיר לחצה נוסף test object containing array. נבנה את הפונקציה הזאת ונגדיר כרגע אובייקט של סטודנט, נקרא לו סטודנט 1.

  31. 11:45

    כשאני רוצה להגדיר אובייקט אז אני משתמש בסוגריים סלסלות. אז יש לי כמובן לדוגמה first name, נקודותיים, מוישה.

  32. 11:55

    יש לי last name נקודתיים רופניק ויש לי grades אבל מה עם הציונים שלו? הציונים שלו הם מערך ולכן אני יכול להגדיר מערך בתוך אובייקט כאילו שהמערך זה ערך שנמצא בתוך אחד התאים של האובייקט כרגע זה grades.

  33. 12:19

    אה ולדוגמה הציונים שלו זה 80.5 יש לו ציון נוסף של 70 יש לו ציון נוסף של 98 יש לו ציון אחד 100 עוד 100 ויש לו ציון אחד של 97.3. וזה בעצם אובייקט שהצגנו או שיצרנו בזיכרון שמחזיק לנו שם פרטי, שם משפחה ומערך של ציונים.

  34. 12:49

    אז בואו נציג אותו. אז יש לנו first name ואני רוצה להגיע לשם הפרטי אז כמובן יש לי student או יותר נכון student1.first name last name יש לנו את סטיודנט אחד נקודה last name ובואו נציג גם את מערך הציונים grades ונשרשר אותו עם סטיודנט אחד נקודה grades להזכירכם אם אני מדפיס מערך כל המספרים שלו מוצגים לי בואו נבדוק את זה

  35. 13:37

    נרפרש נלחץ על הלחצן ויש לנו first name משה last name עופני grades ואנחנו רואים את כל מערך הציונים של המערך שלנו אז מה שעשינו כאן והצלחנו לקחת מערך ולייצג אותו בתור אחד הערכים של אובייקט האם עכשיו אנחנו יכולים לעשות את הדבר ההפוך.

  36. 14:00

    בואו נפנה פונקציה test.json.array.of.objects נשכפל את הלחצן של test.array.of.objects. ניקח את הפונקציה הזאת, נקרא לה ונגדיר כאן קודם כל מערך שמחזיק אובייקטים.

  37. 14:38

    איך אנחנו יכולים לעשות את זה? אז בואו נניח שהיו לנו כבר את שלושת האובייקטים של המכוניות פה למעלה, בואו ניקח אותם ונדביק אותם כאן.

  38. 14:50

    אם אני רוצה עכשיו מערך שיחזיק לי מכוניות, לדוגמה cars, אז אני יכול פשוט מאוד להגדיר את התחביר של מערך, סוגריים מרובעות, ואז car1 פסיק car2 פסיק car3.

  39. 15:06

    בואו לדוגמה נציג את הכל, אז אני רץ על הכל, for var i שווה 0 כל עוד i קטן מcars.length

לקורס המלא: קורס Javascript אונליין

ההרצאה הקודמת: AJAX

ההרצאה הבאה: OOP

הרצאות קשורות מקורסים אחרים

  • מה זה JSON
  • דוגמאות לעבודה עם JSON - חלק 1
  • Save Collection to JSON File
  • יצירת קובץ Package.json

קורסים נוספים במסלול

  • קורס יסודות HTML - בניית אתר אינטרנט פשוט
  • קורס CSS 3 - בדגש על Flex & Grid
  • קורס ג'אווה סקריפט מעשי - JavaScript
  • קורס TypeScript
  • קורס ריאקט - React
  • קורס NodeJS