עיצוב פלט JSON
שיעור 5 מתוך 9 בקורס JSON ב-Python של Coddy.
כשעובדים עם נתוני JSON, לעיתים קרובות כדאי לעצב את הפלט כדי שיהיה קריא יותר. הפונקציה json.dumps() של Python מספקת פרמטרים לשליטה בעיצוב של פלט JSON, והופכת אותו לקריא יותר לבני אדם. לתהליך הזה קוראים לעיתים קרובות „הדפסה מעוצבת”.
הפרמטר indent
הפרמטר indent ב-json.dumps() מאפשר לך לציין את מספר הרווחים להזחה. כך מתקבל מבנה היררכי קריא יותר:
import json
data = {"name": "John", "age": 30, "city": "New York"}
# ללא הזחה
print(json.dumps(data))
# עם הזחה
print(json.dumps(data, indent=2))
הפלט עם indent=2 יהיה:
{
"name": "John",
"age": 30,
"city": "New York"
}
הפרמטר separators
הפרמטר separators מאפשר לך לציין את המפרידים בין פריטים ובין זוגות של מפתח וערך. זהו tuple של שתי מחרוזות: (item_separator, key_separator).
# מפרידים כברירת מחדל
print(json.dumps(data, indent=2))
# מפרידים מותאמים אישית
print(json.dumps(data, indent=2, separators=(', ', ': ')))
המפרידים המוגדרים כברירת מחדל הם (', ', ': '). אפשר להשתמש בפרמטר הזה כדי להפוך את הפלט לתמציתי יותר או להוסיף רווחים נוספים.
שילוב פרמטרים
אפשר לשלב את הפרמטרים האלה כדי לשלוט בפלט JSON באופן מדויק:
formatted_json = json.dumps(data, indent=4, separators=(', ', ': '))
print(formatted_json)
השילוב הזה יוצר פלט JSON מעוצב היטב וקל לקריאה. הוא שימושי במיוחד בעבודה עם מבנים מקוננים מורכבים, או כשצריך להציג נתוני JSON בפורמט קריא יותר לבני אדם.
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
אתגר
קלצרו פונקציה שמעצבת מבנה JSON מקונן עם הזחה ומפרידים מותאמים אישית. הפונקציה צריכה:
- לקבל שלושה פרמטרים: מילון או רשימה של Python, רמת הזחה ודגל בוליאני לפלט קומפקטי.
- להשתמש ב־
json.dumps()כדי להמיר את הקלט למחרוזת JSON. - להגדיר את ההזחה לרמה שצוינה אם הדגל הקומפקטי הוא False, ואחרת לא להשתמש בהזחה.
- להשתמש בפסיק ואחריו רווח (", ") כמפריד בין פריטים, ובנקודתיים ואחריהן רווח (": ") כמפריד בין מפתחות, כאשר הדגל הקומפקטי הוא False. להשתמש בפסיק (",") ובנקודתיים (":") ללא רווחים כאשר הדגל הקומפקטי הוא True.
- להחזיר את מחרוזת JSON המעוצבת.
הקלט הבא יסופק:
{"menu": {"id": "file", "value": "File", "popup": {"menuitem": [{"value": "New", "onclick": "CreateNewDoc()"}, {"value": "Open", "onclick": "OpenDoc()"}, {"value": "Close", "onclick": "CloseDoc()"}]}}}
4
false
הדפיסו את מחרוזת JSON המעוצבת שהתקבלה.
נסו בעצמכם
import json
# קרא את הקלט
json_input = input()
indent_level = int(input())
compact = input().lower() == 'true'
# פענח את קלט ה-JSON
data = json.loads(json_input)
def format_json(data, indent, compact):
# TODO: כתוב את הקוד שלך כאן
# ממש את הפונקציה המותאמת אישית לעיצוב JSON
pass
# עצב את ה-JSON והדפס את התוצאה
formatted_json = format_json(data, indent_level, compact)
print(formatted_json)כל השיעורים ביחידה JSON ב-Python
תרגלו בעצמכם: קומפיילר Python אונליין