- docx (فرمت مایکروسافت ورد)؛
- pdf (فرمت Adobe)؛
- mobi (معمولاً در دستگاه های آمازون Kindle استفاده می شود)؛
- و خیلی بیشتر (ePub، djvu، fb2، و غیره).
JSON
نشانه گذاری شی جاوا اسکریپت. شما قبلاً کمی در مورد این قالب می دانید! ما در این درس در مورد آن صحبت کردیم و سریال سازی را در JSON در اینجا پوشش دادیم . به دلیلی نام خود را گرفته است. اشیاء جاوا تبدیل شده به JSON در واقع دقیقاً شبیه اشیاء در جاوا اسکریپت هستند. برای درک موضوع ما نیازی به دانستن جاوا اسکریپت ندارید:{
"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 اشیاء جاوا اسکریپت را نشان می دهد، از فرمت های داده جاوا اسکریپت زیر پشتیبانی می کند:
- رشته های؛
- شماره؛
- اشیاء؛
- آرایه ها
- Booleans (درست و نادرست)؛
- خالی.
-
قالب قابل خواندن برای انسان اگر کاربر نهایی شما انسان باشد، این یک مزیت آشکار است. به عنوان مثال، فرض کنید سرور شما یک پایگاه داده با برنامه پروازها دارد. یک مشتری انسانی که در خانه پشت کامپیوتر خود نشسته است، با استفاده از یک برنامه وب، داده ها را از این پایگاه داده درخواست می کند. از آنجایی که باید داده ها را در قالبی ارائه دهید که او بتواند آن را درک کند، JSON یک راه حل عالی است.
-
سادگی. فوق العاده ساده است :) در بالا، نمونه ای از دو فایل JSON ارائه دادیم. و حتی اگر در مورد جاوا اسکریپت چیزی نشنیده باشید (چه رسد به اشیاء جاوا اسکریپت)، به راحتی می توانید نوع اشیاء توصیف شده در آنجا را درک کنید.
کل مستندات JSON شامل یک صفحه وب با چند عکس است. -
استفاده گسترده. جاوا اسکریپت زبان فرانت اند غالب است و الزامات خاص خود را دارد. استفاده از JSON یک امر ضروری است. بنابراین، تعداد زیادی از خدمات وب از JSON به عنوان فرمت تبادل داده استفاده می کنند. هر IDE مدرن از فرمت JSON (از جمله IntelliJ IDEA) پشتیبانی می کند. مجموعه ای از کتابخانه ها برای انواع زبان های برنامه نویسی نوشته شده اند تا کار با JSON را فعال کنند.
YAML
در ابتدا، YAML مخفف "Yet Another Markup Language" بود. هنگامی که شروع به کار کرد، به عنوان یک رقیب برای XML قرار گرفت. اکنون، با گذشت زمان، YAML به معنای "YAML Ain't Markup Language" است. دقیقا چیه؟ بیایید تصور کنیم که برای نمایش شخصیت ها در یک بازی کامپیوتری باید 3 کلاس ایجاد کنیم: Warrior، Mage و Thief. آنها ویژگی های زیر را خواهند داشت: قدرت، چابکی، استقامت، مجموعه ای از سلاح ها. در اینجا یک فایل 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
مجموعه ای نامرتب از جفت های کلید-مقدار که نمی توانند تکراری داشته باشند. -
!!map
یک دنباله مرتب شده از جفت های کلید-مقدار که نمی توانند تکراری داشته باشند. -
!!pairs:
دنباله ای مرتب شده از جفت های کلید-مقدار که می توانند تکراری داشته باشند. - !!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
هنگامی که این فایل تجزیه می شود، مقدار "Leo Tolstoy" در مکان های مناسبی که نام مستعار خود را داریم جایگزین می شود.
- 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 می تواند شامل یک تاریخ (در قالب میلی ثانیه) یا حتی یک قطعه کد جاوا اسکریپت باشد. پایگاه داده محبوب MongoDB NoSQL اطلاعات را در قالب BSON ذخیره می کند.پروتکل مبتنی بر موقعیت
در برخی شرایط، ما باید حجم داده های ارسالی را به شدت کاهش دهیم (مثلاً اگر داده های زیادی داریم و نیاز به کاهش بار داریم). در این شرایط می توانیم از پروتکل مبتنی بر موقعیت استفاده کنیم، یعنی مقادیر پارامتر را بدون نام خود پارامترها ارسال کنیم."Leo Tolstoy" | "Anna Karenina" | 1873
اطلاعات در این فرمت چندین برابر فضای کمتری نسبت به یک فایل JSON کامل اشغال می کند. البته فرمت های سریال سازی دیگری نیز وجود دارد، اما لازم نیست فعلاً همه آنها را بدانید :) اگر در هنگام توسعه برنامه ها با فرمت های استاندارد فعلی صنعت آشنا باشید و مزیت های آنها و تفاوت آنها با یکی را به خاطر بسپارید خوب است. یکی دیگر. و با این، درس ما به پایان می رسد :) فراموش نکنید که امروز چند کار را حل کنید! تا دفعه بعد! :)
GO TO FULL VERSION