- دوكإكس (تنسيق مايكروسوفت وورد)؛
- pdf (تنسيق أدوبي)؛
- mobi (يشيع استخدامه على أجهزة Amazon Kindle)؛
- وأكثر من ذلك بكثير (ePub، djvu، fb2، وما إلى ذلك).
JSON
جافا سكريبت تدوين كائن. أنت تعرف بالفعل القليل عن هذا التنسيق! لقد تحدثنا عنها في هذا الدرس ، وقمنا بتغطية التسلسل إلى 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 يرمز إلى "لغة ترميزية أخرى". عندما بدأت، تم وضعها كمنافس لـ 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
سلسلة من القيم العشوائية؛
سوف تتعرف على بعض هذه الهياكل من Java! :) هذا يعني أنه يمكن إجراء تسلسل لهياكل البيانات المختلفة من لغات البرمجة في 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 تضمين البيانات بتنسيقات أخرى. على سبيل المثال، جسون:
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