JSON – הבדלי גרסאות
אין תקציר עריכה |
|||
שורה 39: | שורה 39: | ||
} |
} |
||
</source> |
</source> |
||
== JSONP == |
|||
JSONP (ראשי תיבות של '''J'''ava'''S'''cript '''O'''bject '''N'''otation with '''P'''adding) הוא שיטה להעברת מסמכי JSON בין אתרים בעלי כתובות אינטרנט שונות. כיוון שמנגנוני אבטחה בדפדפנים מגבילים העברת מסמכים בין אתרים {{אנג|same-origin policy}}, מסמכי JSON כפי שהם אינם ניתנים להעברה. בכדי לאפשר לאתרים אחרים לגשת לאובייקט JSON, המסמך יישמר בפורמט <code>.jsonp</code>, כאשר המידע במסמך נעטף בשם של [[שגרה (תכנות)|פונצית]] JavaScript הקיימת בף האינטרנט שממנו טוענים את מסמך ה-JSONP, ובכך מהווה פרמטר של הפונקציה. בעת הטעינה, הפונקציה תופעל, ותוכל לגשת אל אובייקט ה-JSON דרך הפרמטרים שלה. להלן דוגמה למבנה מסמך JSONP: |
|||
<source lang="javascript"> |
|||
fooBar({ |
|||
firstName: "יעקב", |
|||
lastName: "ישראלי", |
|||
address: { |
|||
streetAddress: "רחוב המשעול, 13", |
|||
city: "ירושלים", |
|||
state: "ישראל", |
|||
postalCode: 10021 |
|||
}, |
|||
phoneNumbers: [ |
|||
"212 555-1234", |
|||
"646 555-4567" |
|||
] |
|||
}); |
|||
</source> |
|||
בדוגמה שלמעלה, <code>fooBar</code> הוא שם הפונקציה שאליה מסמך ה-JSONP יקרא, והמידע המועבר זהה לאובייקט ה-JSON שהוצג בדוגמה הראשונה. דוגמה לפונקציה fooBar: |
|||
<source lang="javascript"> |
|||
function fooBar(param) { |
|||
alert("שם פרטי: " + param.firstName + "\nשם משפחה: " + param.lastName); |
|||
} |
|||
</source> |
|||
בדוגמה למעלה, בעת טעינת מסמך ה-JSONP, הפונקציה <code>fooBar</code> תציג הודעה עם הטקסט הבא: "שם פרטי: יעקב. שם משפחה: ישראלי". |
|||
שם הפונקציה במסמך ה-JSONP יכול להיות סטטי- כלומר, שם פונקציה קבוע שיש לשמור למסמך הספציפי, אך גם אפשרי ליצור שם דינמי לפונקציה, למשל, כאשר לכתובת ה-[[URL]] של מסמך ה-JSONP מוסיפים פרמטרים נוספים, בהתאם להוראות האתר שבו נמצא המסמך הרצוי. |
|||
==ראו גם== |
==ראו גם== |
||
*[[XML]] |
*[[XML]] |
גרסה מ־14:44, 9 באפריל 2015
JSON (ראשי תיבות של JavaScript Object Notation) הוא פורמט קל משקל להעברת מידע. פורמט זה הוא פורמט טקסטואלי, הקריא לאדם, המיועד לייצוג מבני מידע פשוטים ושכבות אסוציאטיביות (אובייקטים). תיאורו הרשמי של פורמט JSON מוגדר ב-RFC 4627 שפותח על ידי דאגלס קרוקפורד. השם הרשמי של סוג מדיה זו הוא application/json
וקבצים בפורמט זה הם בעלי סיומת .json
.
ב-JSON נעשה שימוש נרחב להעברת מבני מידע ברשת בתהליך הקרוי סריאליזציה. השימוש העיקרי בפורמט הוא במסגרת תכנות AJAX, שם משמש JSON תחליף אפשרי לפורמט XML.
אף על פי שפורמט זה פותח בתחילה לשימוש ב-Javascript ונעשה בו שימוש נרחב בשפה זו, JSON נחשב כפורמט מבנה נתונים לא תלוי שפה, ותמיכה מוכנה בהמרה לפורמט JSON קיימת במגוון שפות תכנות.
בדצמבר 2005 Yahoo! החלה להציע את שירותי הרשת שלה גם בפורמט JSON. שנה לאחר מכן הציעה Google עדכוני JSON עבור פרוטוקול GData.
השוואה ל XML
יתרון מרכזי של JSON על XML הוא ש XML חייב להיות מפוענח על ידי XML parser בעוד ש JSON ניתן לפענוח גם על ידי פונקציות Javascript.
דומה ל XML
- שניהם משתמשים בטקסט פשוט (plain text)
- שניהם מגדירים את עצמם (human readable)
- ניתנים לגישה על ידי HttpRequest
שונה מ XML
- JSON לא דורש tag לסיומו.
- JSON קצר יותר
- JSON קל יותר לקריאה וכתיבה
- JSON מאפשר שימוש במערכים
דוגמה
להלן דוגמה לייצוג של אובייקט המתאר אדם בפורמט JSON.
{
firstName: "יעקב",
lastName: "ישראלי",
address: {
streetAddress: "רחוב המשעול, 13",
city: "ירושלים",
state: "ישראל",
postalCode: 10021
},
phoneNumbers: [
"212 555-1234",
"646 555-4567"
]
}
JSONP
JSONP (ראשי תיבות של JavaScript Object Notation with Padding) הוא שיטה להעברת מסמכי JSON בין אתרים בעלי כתובות אינטרנט שונות. כיוון שמנגנוני אבטחה בדפדפנים מגבילים העברת מסמכים בין אתרים (same-origin policy), מסמכי JSON כפי שהם אינם ניתנים להעברה. בכדי לאפשר לאתרים אחרים לגשת לאובייקט JSON, המסמך יישמר בפורמט .jsonp
, כאשר המידע במסמך נעטף בשם של פונצית JavaScript הקיימת בף האינטרנט שממנו טוענים את מסמך ה-JSONP, ובכך מהווה פרמטר של הפונקציה. בעת הטעינה, הפונקציה תופעל, ותוכל לגשת אל אובייקט ה-JSON דרך הפרמטרים שלה. להלן דוגמה למבנה מסמך JSONP:
fooBar({
firstName: "יעקב",
lastName: "ישראלי",
address: {
streetAddress: "רחוב המשעול, 13",
city: "ירושלים",
state: "ישראל",
postalCode: 10021
},
phoneNumbers: [
"212 555-1234",
"646 555-4567"
]
});
בדוגמה שלמעלה, fooBar
הוא שם הפונקציה שאליה מסמך ה-JSONP יקרא, והמידע המועבר זהה לאובייקט ה-JSON שהוצג בדוגמה הראשונה. דוגמה לפונקציה fooBar:
function fooBar(param) {
alert("שם פרטי: " + param.firstName + "\nשם משפחה: " + param.lastName);
}
בדוגמה למעלה, בעת טעינת מסמך ה-JSONP, הפונקציה fooBar
תציג הודעה עם הטקסט הבא: "שם פרטי: יעקב. שם משפחה: ישראלי".
שם הפונקציה במסמך ה-JSONP יכול להיות סטטי- כלומר, שם פונקציה קבוע שיש לשמור למסמך הספציפי, אך גם אפשרי ליצור שם דינמי לפונקציה, למשל, כאשר לכתובת ה-URL של מסמך ה-JSONP מוסיפים פרמטרים נוספים, בהתאם להוראות האתר שבו נמצא המסמך הרצוי.
ראו גם
קישורים חיצוניים
- היכרות עם JSON, באתר json.org