- docx (פורמט Microsoft Word);
- pdf (פורמט Adobe);
- mobi (בשימוש נפוץ במכשירי אמזון קינדל);
- ועוד הרבה יותר (ePub, djvu, fb2 וכו').
JSON
סימון אובייקט JavaScript. אתה כבר יודע קצת על הפורמט הזה! דיברנו על זה בשיעור הזה , וכיסינו את ההסדרה ב-JSON ממש כאן . יש לזה סיבה. אובייקטי Java שהומרו ל-JSON למעשה נראים בדיוק כמו אובייקטים ב-JavaScript. אתה לא צריך לדעת JavaScript כדי להבין את האובייקט שלנו:{
"title": "War and Peace",
"author": "Lev Tolstoy",
"year": 1869
}
אנחנו לא מוגבלים לשליחת אובייקט בודד. פורמט JSON יכול לייצג גם מערך של אובייקטים:
[
{
"title": "War and Peace",
"author": "Lev Tolstoy",
"year": 1869
},
{
"title": "Demons",
"author": "Fyodor Dostoyevsky",
"year": 1872
},
{
"title": "The Seagull",
"author": "Anton Chekhov",
"year": 1896
}
]
מכיוון ש-JSON מייצג אובייקטים של JavaScript, הוא תומך בפורמטים הבאים של נתוני JavaScript:
- מחרוזות;
- מספרים;
- חפצים;
- מערכים;
- בוליאנים (נכון ושקרי);
- ריק.
-
פורמט קריא לאדם. זהו יתרון ברור אם משתמש הקצה שלך הוא אנושי. לדוגמה, נניח שלשרת שלך יש מסד נתונים עם לוח זמנים של טיסות. לקוח אנושי, היושב ליד המחשב שלו בבית, מבקש נתונים ממסד נתונים זה באמצעות יישום אינטרנט. מכיוון שאתה צריך לספק נתונים בפורמט שהוא יכול להבין, JSON הוא פתרון מצוין.
-
פַּשְׁטוּת. זה סופר פשוט :) למעלה, הבאנו דוגמה של שני קבצי JSON. וגם אם לא שמעתם על JavaScript (שלא לדבר על אובייקטי JavaScript), תוכלו להבין בקלות את סוג האובייקטים המתוארים שם.
כל התיעוד של JSON מורכב מדף אינטרנט עם כמה תמונות. -
שימוש נפוץ. JavaScript היא שפת החזית השלטת, ויש לה דרישות משלה. שימוש ב-JSON הוא חובה. לכן, מספר עצום של שירותי אינטרנט משתמשים ב-JSON כפורמט חילופי הנתונים. כל IDE מודרני תומך בפורמט JSON (כולל IntelliJ IDEA). חבורה של ספריות נכתבו עבור כל מיני שפות תכנות כדי לאפשר עבודה עם JSON.
YAML
בתחילה, YAML עמד על "עוד שפת סימון". כשהיא התחילה, הוא מוצב כמתחרה ל-XML. כעת, עם חלוף הזמן, פירושו של YAML הוא "YAML Ain't Markup Language". מה זה בדיוק? בואו נדמיין שאנחנו צריכים ליצור 3 מחלקות כדי לייצג דמויות במשחק מחשב: לוחם, קוסם וגנב. יהיו להם המאפיינים הבאים: כוח, זריזות, סיבולת, סט כלי נשק. כך ייראה קובץ YAML המתאר את השיעורים שלנו:classes:
class-1:
title: Warrior
power: 8
agility: 4
stamina: 7
weapons:
- sword
- spear
class-2:
title: Mage
power: 5
agility: 7
stamina: 5
weapons:
- magic staff
class-3:
title: Thief
power: 6
agility: 6
stamina: 5
weapons:
- dagger
- poison
לקובץ YAML יש מבנה עץ: חלק מהאלמנטים מקוננים באחרים. אנו יכולים לשלוט בקינון באמצעות מספר מסוים של רווחים, שבהם אנו משתמשים כדי לציין כל רמה. מהם היתרונות של פורמט YAML?
-
קריא אדם. שוב, אפילו לראות קובץ YAML ללא תיאור, אתה יכול להבין בקלות את האובייקטים שהוא מתאר. YAML כל כך קריא אנושי שהאתר yaml.org הוא קובץ YAML רגיל :)
-
צְפִיפוּת. מבנה הקובץ נוצר באמצעות רווחים: אין צורך להשתמש בסוגריים או מרכאות.
-
תמיכה במבני נתונים מקוריים עבור שפות תכנות. היתרון העצום של YAML על פני JSON ופורמטים רבים אחרים הוא בכך שהוא תומך במבני נתונים שונים. הם כוללים:
-
!!map
קבוצה לא מסודרת של זוגות מפתח-ערך שלא יכולים להיות כפולים; -
!!omap
רצף מסודר של צמדי מפתח-ערך שאינם יכולים להיות כפולים; -
!!זוגות:
רצף מסודר של זוגות מפתח-ערך שיכולים להיות כפולים; - !!set
רצף לא מסודר של ערכים שאינם שווים זה לזה; - !!seq
רצף של ערכים שרירותיים;
אתה תזהה חלק מהמבנים הללו מג'אווה! :) זה אומר שניתן להעביר מבני נתונים שונים משפות תכנות ל-YAML.
-
-
יכולת שימוש בעוגן ובכינוי
סמנים אלו מאפשרים לך לזהות אלמנט כלשהו בקובץ YAML, ולאחר מכן להתייחס אליו בשאר הקובץ אם הוא מתרחש שוב ושוב. עוגן נוצר באמצעות הסמל & , וכינוי נוצר באמצעות * .
נניח שיש לנו קובץ המתאר ספרים מאת ליאו טולסטוי. על מנת להימנע מלכתוב את שם המחבר עבור כל ספר, אנו פשוט יוצרים את עוגן אריה ומתייחסים אליו באמצעות כינוי כאשר אנו זקוקים לו:
books: book-1: title: War and Peace author: &leo Leo Tolstoy year: 1869 book-2: title: Anna Karenina author: *leo year: 1873 book-3: title: Family Happiness author: *leo year: 1859
כאשר הקובץ הזה מנותח, הערך "ליאו טולסטוי" מוחלף במקומות הנכונים שבהם יש לנו את הכינויים שלנו.
- YAML יכול להטמיע נתונים בפורמטים אחרים. לדוגמה, JSON:
books: [ { "title": "War and Peace", "author": "Leo Tolstoy", "year": 1869 }, { "title": "Anna Karenina", "author": "Leo Tolstoy", "year": 1873 }, { "title": "Family Happiness", "author": "Leo Tolstoy", "year": 1859 } ]
פורמטים אחרים של סדרה
XML
פורמט זה מבוסס על עץ תגים.<book>
<title>Harry Potter and the Philosopher’s Stone</title>
<author>J. K. Rowling</author>
<year>1997</year>
</book>
כל אלמנט מורכב מתג פתיחה וסגירה (<> ו</>). לכל אלמנט יכולים להיות אלמנטים מקוננים. XML הוא פורמט נפוץ שהוא טוב בדיוק כמו JSON ו-YAML (אם אנחנו מדברים על פרויקטים אמיתיים). יש לנו שיעור נפרד על XML
.
BSON (JSON בינארי)
כפי ששמו מרמז, BSON דומה מאוד ל-JSON, אך אינו קריא לאדם ומשתמש בנתונים בינאריים. כתוצאה מכך, הוא טוב מאוד לאחסון והעברת תמונות וקבצים מצורפים אחרים. בנוסף, BSON תומך בכמה סוגי נתונים שאינם זמינים ב-JSON. לדוגמה, קובץ BSON יכול לכלול תאריך (בפורמט של אלפיות שנייה) או אפילו חתיכת קוד JavaScript. מסד הנתונים הפופולרי MongoDB NoSQL מאחסן מידע בפורמט BSON.פרוטוקול מבוסס מיקום
במצבים מסוימים, עלינו להפחית באופן דרסטי את כמות הנתונים הנשלחים (למשל, אם יש לנו הרבה נתונים וצריך להפחית את העומס). במצב זה, נוכל להשתמש בפרוטוקול מבוסס מיקום, כלומר לשלוח ערכי פרמטרים ללא שמות הפרמטרים עצמם."Leo Tolstoy" | "Anna Karenina" | 1873
נתונים בפורמט זה לוקחים פי כמה פחות מקום מקובץ JSON מלא. כמובן, יש עוד פורמטים של סריאליזציה, אבל לא צריך להכיר את כולם כרגע :) זה טוב אם אתה מכיר את הפורמטים הסטנדרטיים בתעשייה הנוכחיים בעת פיתוח אפליקציות, ותזכור את היתרונות שלהם וכיצד הם שונים מאלה אַחֵר. ועם זה, השיעור שלנו מגיע לסיומו :) אל תשכח לפתור כמה משימות היום! עד הפעם הבאה! :)
GO TO FULL VERSION