PracticU

דוגמאות לעבודה עם JSON - חלק 3

בלי כתוביותעם כתוביות
PracticU › קורס פיתוח אפליקציות - לאייפון iPhone iOS - ב-Swift-Xcode › דוגמאות לעבודה עם JSON - חלק 3
מילון מושגים:
JSON - פורמט טקסט קריא לייצוג נתונים מובְנים כזוגות מפתח-ערך, נפוץ להחלפת מידע בין שרת ללקוח.
API - ממשק תכנותי שמגדיר כיצד תוכנה אחת פונה לאחרת ומחליפה איתה נתונים ופעולות.
מערך - מבנה נתונים שמאחסן אוסף ערכים מאותו סוג ברצף, שאפשר לגשת אליהם לפי מספר מיקום (אינדקס).
מודל - רכיב שמייצג את הנתונים ואת הלוגיקה העסקית באפליקציה. גם ייצוג מופשט של מערכת או תהליך.
מחרוזת - סוג נתונים שמייצג רצף של תווים, כלומר טקסט, ומשמש לאחסון מילים, משפטים או כל רצף סימנים.
View - רכיב שאחראי על הצגת המידע למשתמש (התצוגה) בדפוס MVC. גם טבלה וירטואלית מבוססת שאילתה במסד נתונים.
קונטרולר - רכיב שמתווך בין הממשק לבין הלוגיקה והנתונים, מקבל בקשות ומחליט כיצד לטפל בהן (למשל בדפוס MVC).

דוגמאות לעבודה עם JSON - חלק 3
הדוגמה האחרונה בסדרה עוסקת ב-API של שערי חליפין (Fixer). ה-JSON מחזיר מילון של שם מטבע ושער, והשיעור מראה איך להפוך אותו למערך של אובייקטים נוח יותר.
השלבים העיקריים
1. קבלת ה-JSON: הכתובת של ה-API דורשת הרשמה ו-API Key. בשיעור מעתיקים את התשובה לקובץ mock_data.json ועובדים איתו מקומית, כי עדיין לא למדו לגשת לשרת. התשובה כוללת success, timestamp, base, date ו-rates.
2. המודל: struct בשם FixerRates עם date, base (String) ומערך rates. struct פנימי בשם Rate מכיל name (String) ו-rate (Double).
3. CodingKeys: enum עם המפתחות timestamp, date, success, rates ו-base. הוא נדרש כי מממשים Decodable ידנית.
4. init(from:): שולפים את rates מה-container כמילון [String: Double], ואחר כך date כ-Date ו-base כ-String. בין date ל-timestamp אפשר לבחור, כי יש כפילות.
5. מיפוי המילון: עם map הופכים כל זוג key-value ל-Rate, בעזרת ה-init של ה-struct, כך שמתקבל מערך במקום מילון.
6. פענוח: readDemo מוצאת את הקובץ ב-bundle, קוראת Data ומפעילה JSONDecoder עם try!.
7. תאריך: DateFormatter עם שנה-חודש-יום ואזור זמן UTC מוגדר כ-dateDecodingStrategy בצורת formatted. בלי UTC התאריך נפרש לפי אזור הזמן של המחשב.
8. בדיקה: קוראים לפונקציה מה-View Controller, והפלט מראה את ה-JSON מפוענח, כולל התאריך.
שימו לב
אפשר להשאיר את המבנה זהה ל-JSON (מילון של String ו-Double), אבל זו אפשרות פחות מומלצת. עדיף להגדיר struct של שער חליפין עם שם ושער ולעבוד עם מערך שלהם.
אחרי השיעור אפשר להמיר מילון מה-JSON למערך של struct ולהתמודד עם תאריכים ב-UTC.
השיעור הבא בקורס: עבודה עם GCD - עבודה אסינכרונית ב-Xcode

פרקי ההרצאה: דוגמאות לעבודה עם JSON - חלק 3

  1. 00:00

    הכרת Fixer API לשערי מטבע

  2. 00:42

    API Key וכתובת הבקשה

  3. 01:19

    שמירת ה-JSON ופרויקט חדש

  4. 02:35

    תכנון struct של FixerRates

  5. 04:08

    CodingKeys עבור שדות ה-JSON

  6. 05:05

    מימוש Decodable עם init from decoder

תמלול ההרצאה: דוגמאות לעבודה עם JSON - חלק 3

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

  1. 00:02

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

  2. 00:30

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

  3. 00:45

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

  4. 01:00

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

  5. 01:13

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

  6. 01:25

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

  7. 01:44

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

  8. 02:01

    אז אוקיי, זה הקובץ, בואו נייצר לעצמנו פרויקט ב-Xcode ונראה מה אנחנו עושים שם. אז אנחנו ב-Xcode, New Project ו-Single View Application, נקרא לזה JSON Demo Fixer API ונתקדם הלאה.

  9. 02:23

    לתוך הפרויקט נרצה לגרור את הקובץ JSON כמו שעשינו בפעמים הקודמות, ממש מתחת ל-View Controller ואנחנו בוחרים בכל האפשרויות הבאות. אוקיי, עכשיו אנחנו רוצים לייצר לעצמנו איזשהו Struct, נכון? בשביל Fixer Rates, בואו נעשה New File, Swift File,

  10. 02:47

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

  11. 03:10

    יהיה לנו את ה-Base שזה String, שזה נגיד יכול להיות יורו או הבסיס הוא על בסיס דולרי, כלומר ביחס למה ממירים, ומעבר לזה יהיה לנו Struct פנימי, נקרא לו נגיד רייט שבסטרקט הפנימי יש לנו ניים שהוא סטרינג למשל הניים יכול להיות ניו ישראל שקל או usd אוקיי

  12. 03:37

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

  13. 04:08

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

  14. 04:24

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

  15. 04:44

    הקייסים שלנו זה פשוט לפי השמות בג'ייסון אז פשוט יש לנו את ה-time stamp נגיד ללא שינוי רק נשים לב שכתבנו את הכל טוב יש לנו את הדייט יש לנו סקסס יש לנו את רייטס ויש לנו את הבייס אוקיי?

  16. 05:03

    אז זה הקוד אין קייס. עכשיו אנחנו רוצים לממש דיקודר דיקודבל אז בואו נממש Decodable, ומה זה אומר בעצם? זה אומר שאנחנו צריכים להוסיף לעצמנו Init From Coder, נכון?

  17. 05:17

    אז בואו נעשה את זה. נוסיף אותו פה מעל ה-Inam, שהכול יהיה ביחד, Init From Coder, ודבר ראשון מוצאים קונטיינר, זה אנחנו יודעים, אז טריין, דיקודר, תן לי קונטיינר עם הקיד ביי,

לקורס המלא: קורס פיתוח אפליקציות לאייפון

ההרצאה הקודמת: דוגמאות לעבודה עם JSON - חלק 2

ההרצאה הבאה: עבודה עם GCD - עבודה אסינכרונית ב-Xcode

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

  • JSON
  • מה זה JSON
  • דוגמאות לסקריפט שימושי
  • דוגמאות לשימוש ב-SIEM - חלק 1

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

  • קורס יסודות התכנות - שפת JAVA - קורס ג'אווה למתחילים
  • קורס פיתוח אפליקציות - לאנדרואיד - Android - ב-JAVA
  • קורס פלאטר - Flutter - שפת DART של גוגל למובייל - פיתוח אפליקציות לאנדרואיד ואייפון
  • קורס PhoneGap - פיתוח אפליקציות לאנדרואיד ואייפון