קורס פיתוח מתקדם בפייתון
פרק
>
רמה
מודולי הסיריאליזציה
מודול JSON
מטרה
עברו אל תחנת השירות וודאו שהנתונים מאוחסנים כהלכה באמצעות מודול JSON לעיצוב הקבצים.
ישנה תחנת שירות מדרום למבנה המשנה באזור הבנייה החדש; כל האזור הזה יפותח מחדש כדי לגדל יבולים. בתחנה יש מגוון מסופים שמעבדים נתונים עבור הפיתוח החדש; נוכל להזין את הנתונים ידנית, אבל זה ייקח הרבה זמן. לתהליך עיבוד הנתונים נוכל להשתמש ב־JSON (ראשי תיבות של JavaScript Object Notation), פורמט נתונים עצמאי משפות תכנות, המאחסן מידע בפורמט קריא בקלות לצורך אחסון והעברת נתונים.
כדי להשתמש ב־JSON עם Python, נוכל להיעזר ב־import json, שייתן לנו גישה לפונקציות JSON. למטרותינו נשתמש בפונקציות הבאות:
json.loads(): ממירה מחרוזת JSON למבנה נתונים של Python, מקבלת ארגומנט אחד – המחרוזת שברצונך לפרש ל־Python.json.dumps(): ממירה מבני נתונים של Python לאובייקט מחרוזת JSON. פונקציה זו יכולה לקבל עד ארבעה ארגומנטים, ורק הראשון הוא חובה. הם הבאים:- מבני נתונים של Python שברצונך להמיר ל־JSON: הם יכולים להיות מסוגי הנתונים הבאים: dictionaries, lists, tuples, strings, integers, floats, boolean ו־None.
indent: מספר הרווחים להוספה בתחילת כל נקודת נתונים.separators: אלה החלקים שברצונך שיופיעו בין נקודות הנתונים ובסופן.sort_keys: ממיין את המפתחות במילון בסדר אלפביתי אם אתה ממיר מבנה נתונים של מילון.
להתחלה, גש לסמן X זהב במחנה המשנה משמאל, ועמוד מול השולחן שבו נמצא הפתק. השתמש בפונקציה read() כדי לאמת את המידע הנדרש לאישור מצב המסוף ורשום אותו. לאחר מכן, עבור לסמן X בהיר מול המסוף; ישנו קבוע בשם transmission. השתמש ב־json.dumps() כדי לעצב אותו כ־JSON ולבצע המרה, למשל: transmission = json.dumps(transmission).
צרו מילון בשם load ואחסנו בו את התוצאה של json.loads() כשהקבוע transmission מועבר כארגומנט. זה יהפוך את ה־JSON למבני Python כדי שניתן יהיה לגשת למידע בקלות. השתמשו בפונקציה speak() עם המפתחות המצוינים בפתק ובמילון load שיצרתם. לדוגמה: player.speak(load["system"]); עשו זאת עבור כל המפתחות.
לאחר בדיקת המידע במסוף, ירדו לעבר התחנה, כנסו פנימה ופנו לסמן X בהיר מעל השטיח הירוק. בדקו את הפתק באמצעות הפונקציה read(), רשמו את ערכי הפתק. בעורך יש מילון מוכן בשם profile; מלאו את הערכים החסרים לפי המידע שבפתק.
צעדו לסמן X כהה מעל השטיח הירוק, פנו למסוף וצרו משתנה בשם transfer ואחסנו בו את התוצאה של json.dumps() כשהמילון profile מועבר כארגומנט היחיד. בכך המרתם את המילון לאובייקט מחרוזת JSON. השתמשו בפונקציה המוכנה מראש display() והעבירו אליה את מחרוזת ה־JSON שבמשתנה transfer כדי לאחסן את הנתונים במסוף.
צעדו לסמן X כהה מעל השטיח האדום והשתמשו בפונקציה read() כדי לוודא את הנתונים שכבר הוזנו במסוף. הנתונים אינם מוצגים בפורמט תקין; כדי לאחסן אותם כהלכה יש לעצב אותם כ־JSON. הנתונים שמורים בקבוע מילון בשם red_data; צרו משתנה בשם red_storage ואחסנו בו את תוצאת הפונקציה json.dumps().
כדי לעצב את הנתונים הוסיפו לפונקציה את הארגומנטים הבאים: העבירו את red_data להמרה ל־JSON; הגדירו את indent כ־5 כדי לעצב את הטקסט; הגדירו את separators כ־("- ", " = ") כדי להוסיף את הסימנים הללו בסוף כל שורה. השורה אמורה להיראות כך: red_storage = json.dumps(red_data, indent=5, separators=("- ", " = ")). השתמשו בפונקציה המוכנה מראש display() והעבירו אליה את מחרוזת ה־JSON שב־red_storage כדי לאחסן ולהציג את הנתונים המעוצבים.
צעדו לסמן X כהה מעל השטיח הכחול, פנו למסוף והשתמשו בפונקציה read(). כמו קודם, הנתונים אינם מאוחסנים כהלכה ויש לעצב אותם ולמיין אותם. הנתונים שמורים בקבוע בשם blue_data; צרו משתנה בשם blue_storage ואחסנו בו את תוצאת הפונקציה json.dumps().
לארגומנטים: העבירו את blue_data להמרה ל־JSON; הגדירו את indent כ־4 כדי לעצב את הטקסט; הגדירו את separators כ־(".0", " = ") כדי להוסיף את הסימנים הללו בסוף כל שורה. בנוסף, הוסיפו את הארגומנט sort_keys כארגומנט האחרון והגדירו אותו כ־True, כך: sort_keys=True. השתמשו בפונקציה המוכנה מראש display() והעבירו אליה את מחרוזת ה־JSON שב־blue_storage כדי לאחסן ולהציג את הנתונים הממויינים ולסיים את הרמה.