פרק קודם:
פייתון 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 - פייתון 24 - ג'נרטורים נלמד על יכולת שתעזור לנו לקצר את הבנייה של המילונים בעזרת yield
.
אנחנו משתמשים כאן בתבנית - “הצהרה - בנייה - החזרה”.
הצהרה: differenceDict = {}
בנייה: differenceDict[productName] = diff
החזרה: return differenceDict
התבנית הזו יכולה לחזור עליה הרבה בקוד.
בפרק הבא נלמד מה קורה כשהבלתי צפוי קורה!
פייתון 13 - שגיאות