פרק קודם:
פייתון 12 - קבצים בינארייםמה נלמד
- פורמט JSON
- כיצד לעבוד עם קבצי
JSONבפייתון
JSON - Javascript Object Notation
JSON הוא פורמט מילוני המכיל תכונות עם ערכים.
ערכים יכולים להיות מסוגים שונים - מספרים, בוליאנים, טקסט, מערכים ואובייקטים פנימיים.
חוקים
אובייקטים מוגדרים בעזרת סוגריים מסולסלים - { }.
הפורמט בנוי בתצורת עץ ויכול להכיל ערכים פנימיים.
כל אובייקט Json הוא מילון שמכיל מפתחות וערכים.
השורש - ההתחלה יכול להיות אובייקט או רשימה, ז”א להתחיל ב-[] או {}.
כל תכונה נעטפת בגרשיים - "property".
תכונה וערך מופרדים בעזרת נקודותיים "key":"val".
ערכים מופרדים בעזרת פסיקים "key":"val","key2":"val2"
ערכים טקסטואלים מכילים גרשיים - "value".
null הוא ערך ריק הנכתב ללא גרשיים.
רשימות בנויות בעזרת סוגריים מרובעים [1,2,3].
אובייקטים פנימיים מוגדרים בעזרת סוגריים מסולסלים { "root": { "child": {}}}
קבצים המכילים את הפורמט מקבצים את ההרחבה .json.
עורכי טקסט כמו Vs Code יודעים לערוך את הקבצים האלו ולהציג אותם בצורה נוחה.
דוגמא
1 | { |
Json כמידע
הפורמט מתבסס על תצורה מילונית ההופך אותו לקריא מאוד.
הקריאות והקלות של הפורמט ביססו אותו כפורמט פופולרי בקרב מתכנתים ומשומש בתצורות רבות כיום- בשרתים, במסדי נתונים, במערכות אינדוקס ועוד!
בזכות הפופולריות הפורמט משומש לא רק כקבצים אלה גם כפורמט להעביר מידע!
RFC
ה-RFC הוא מסמך המתאר בצורה מדויקת סטנדרטים.JSON הוא סטנדרט לתצוגה של אובייקטים בצורה טקסטואלית.
https://datatracker.ietf.org/doc/html/rfc7159
בשביל מה RFC?
הסיבה לזה - RFC.
המסמכים האלו עוזרים לנו לבדוק תקינות של מערכת - כי הם כתובים בצורה כזו שאומרת בדיוק מה צריך לקרות.
בהינתן ספריית json - אנחנו יכולים לוודא אם היא תקינה או לא.
אם הספרייה לא יכולה להמיר מערכים של מחרוזות - היא לא תקינה.
ועוד סיבה זה כדי לבדוק תמיכה - האם הסטנדרט תומך בתכונה שאנחנו רוצים או לא?
Json בפייתון
שימו לב שגם בפייתון ה - {} משמשים למילונים!
זה הופך את השימוש ב-JSON לפשוט!
בשביל להמיר לפורמט Json יש 2 פונקציות עיקריות:
json.dumps()- להמיר אובייקט למחרוזתjson.loads()- להמיר מחרוזת לאובייקט
המרת אובייקטים:
1 | import json |
כדי להדפיס Json יפה יותר ניתן להשתמש ב-indent=1 כפרמטר לפונקציה dumps.
הפרמטר מגדיר את הפורמט שבו ה-Json יודפס.indent=1 מוסיף שורות חדשות - ככה שלא כל הפלט יהיה מאוד צפוף.
1 | import json |
המרת מחרוזות:
1 | import json |
תרגיל
- כתבו קובץ ג’ייסון שמתאר קבוצה.
לכל קבוצה יש:
- שם קבוצה
- חברי הקבוצה
- מוטו
- כתובת
לכל חבר קבוצה יש:
- שם
- גיל
- תפקיד
- תכתבו תכנית העוברת על ימי השבוע ומקבלת מהמשתמש החלטה אם זה יום עבודה או יום חופש
על התכנית להדפיס את ימי השבוע על המסך בפורמטJSON.
- שימו לב - תמדלו את התצורה של ה-
jsonלפני שאתם כותבים את הקוד!
למשל - רשימה של אובייקטים כשלכל אובייקט יש את שם היום והגדרה שלו.
- מצאו את המוצר עם ההפרש הגדול ביותר בין המחיר הגבוה ביותר שלו, למחיר הנמוך ביותר שלו.
למשל אם המחירים הם[1,2,3]אזי ההפרש הוא בין3ל-1.
וההפרש יהיה2.
1 | [ |
לאחר שפתרתם נסו להוסיף עוד מוצרים!
1 | [ |
1 | import json |
1 | import json |
בפרק 23 - פייתון 25 - ג'נרטורים נלמד על יכולת שתעזור לנו לקצר את הבנייה של המילונים בעזרת yield.
אנחנו משתמשים כאן בתבנית - “הצהרה - בנייה - החזרה”.
הצהרה: differenceDict = {}
בנייה: differenceDict[productName] = diff
החזרה: return differenceDict
התבנית הזו יכולה לחזור עליה הרבה בקוד.
בפרק הבא נלמד מה קורה כשהבלתי צפוי קורה!
פייתון 13 - שגיאות