- docx (فرمت مایکروسافت ورد)؛
- pdf (فرمت Adobe)؛
- mobi (که معمولاً در دستگاه های آمازون Kindle استفاده می شود)؛
- و خیلی بیشتر (ePub، djvu، fb2...).
JSON
نشانه گذاری شی جاوا اسکریپت. شما قبلاً کمی با او آشنا هستید! ما در این سخنرانی در مورد آن صحبت کردیم و در اینجا به سریال سازی در JSON نگاه کردیم . به دلیلی نام خود را گرفته است. اشیاء جاوا تبدیل شده به JSON در واقع دقیقاً شبیه به اشیاء جاوا اسکریپت هستند. برای درک معنای شیء ما نیازی به دانستن جاوا اسکریپت ندارید:{
"title": "Война и мир",
"author": "Лев Толстой",
"year": 1869
}
لازم نیست یک شی را رد کنید. JSON همچنین می تواند دارای آرایه ای از اشیاء باشد:
[
{
"title": "Война и мир",
"author": "Лев Толстой",
"year": 1869
},
{
"title": "Бесы",
"author": "Федор Достоевский",
"year": 1872
},
{
"title": "Чайка",
"author": "Антон Чехов",
"year": 1896
}
]
از آنجایی که JSON یک شی جاوا اسکریپت است، از فرمت های داده جاوا اسکریپت زیر پشتیبانی می کند:
- رشته های؛
- اعداد (عدد)؛
- اشیاء (شیء)؛
- آرایه ها (آرایه)؛
- مقادیر بولی (درست و نادرست)؛
- خالی.
-
قالب قابل خواندن برای انسان اگر کاربر نهایی شما انسان باشد، این یک مزیت آشکار است. به عنوان مثال، سرور شما یک پایگاه داده با برنامه پرواز ذخیره می کند. یک مشتری انسانی با استفاده از یک برنامه وب در حالی که در خانه پشت رایانه نشسته است، داده ها را از این پایگاه داده درخواست می کند. از آنجایی که باید داده ها را در قالبی ارائه کنید که او بتواند آن را درک کند، JSON یک راه حل عالی است.
-
سادگی. می توان گفت ابتدایی است :) در بالا مثالی از دو فایل JSON ارائه دادیم. و حتی اگر هرگز در مورد وجود جاوا اسکریپت نشنیده باشید (چه برسد به اشیاء آن)، به راحتی می توانید درک کنید که چه نوع اشیایی در آنجا توضیح داده شده است.
کل مستندات JSON یک صفحه وب با چند عکس است. -
بطور گسترده. جاوا اسکریپت زبان فرانت اند غالب است و شرایط آن را دیکته می کند. استفاده از JSON یک امر ضروری است. بنابراین، تعداد زیادی از سرویس های وب از JSON به عنوان قالبی برای تبادل داده استفاده می کنند. هر IDE مدرن از فرمت JSON (از جمله Intellij IDEA) پشتیبانی می کند. مجموعه ای از کتابخانه ها برای کار با JSON برای همه زبان های برنامه نویسی ممکن نوشته شده است.
YAML
در ابتدای وجود خود، این زبان به معنای زبان نشانه گذاری دیگری بود - "زبان نشانه گذاری دیگری". در آن زمان به عنوان یک رقیب برای XML قرار گرفت. اکنون، پس از گذشت زمان، مخفف "YAML Ain't Markup Language" است ("YAML یک زبان نشانه گذاری نیست"). او چگونه است؟ بیایید تصور کنیم که باید 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:
دنباله ای مرتب شده از جفت های کلید:مقدار با امکان تکرار. - !!تنظیم
یک دنباله نامرتب از مقادیر که با یکدیگر برابر نیستند. - !!seq
توالی مقادیر دلخواه;
برخی از این ساختارها از جاوا برای شما آشنا خواهند بود! :) به لطف این ویژگی، می توانید ساختارهای داده مختلف را از زبان های برنامه نویسی به فرمت YAML سریال کنید.
-
-
امکان استفاده از انکر و نام مستعار
ترجمه کلمات "لنگر" و "نام مستعار" - "لنگر" و "نام مستعار". در اصل، جوهر این اصطلاحات را در YAML کاملاً دقیق توصیف می کند.
آنها به شما امکان می دهند یک عنصر را در یک فایل yaml شناسایی کنید و اگر به طور مکرر اتفاق افتاد به آن در بقیه فایل مراجعه کنید. Anchor با استفاده از نماد
&
و نام مستعار با استفاده از ایجاد می شود*
.فرض کنید یک فایل با توضیحات کتاب های لئو تولستوی داریم. برای جلوگیری از نوشتن نام نویسنده هر بار به صورت دستی، ما به سادگی یک لنگر "leo" ایجاد می کنیم و در صورت نیاز با استفاده از نام مستعار به آن اشاره می کنیم:
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 باینری)
همانطور که از نام آن پیداست، بسیار شبیه به JSON است، اما برای انسان قابل خواندن نیست و بر روی داده ها در فرمت باینری کار می کند. این باعث می شود که برای ذخیره و انتقال تصاویر و سایر پیوست ها بسیار راحت باشد. بعلاوه، BSON از انواع داده هایی که در JSON در دسترس نیستند، پشتیبانی می کند. به عنوان مثال، می توانید یک تاریخ (در قالب میلی ثانیه) یا حتی یک قطعه کد جاوا اسکریپت را در یک فایل BSON بنویسید. پایگاه داده محبوب NoSQL MongoDB اطلاعات را در قالب BSON ذخیره می کند.پروتکل مبتنی بر موقعیت
در برخی شرایط، ما باید حجم داده های منتقل شده را به شدت کاهش دهیم (مثلاً اگر داده های زیادی وجود دارد و نیاز به کاهش بار داریم). در این شرایط میتوانیم از پروتکل مبتنی بر موقعیت استفاده کنیم ، یعنی مقادیر پارامتر را بدون نام خود پارامترها پاس کنیم."Leo Tolstoy" | "Anna Karenina" | 1873
داده ها در این فرمت فضای بسیار کمتری را نسبت به یک فایل JSON کامل اشغال می کنند. البته فرمتهای سریالسازی دیگری هم وجود دارد، اما نیازی نیست فعلاً همه آنها را بدانید :) خوب است با فرمتهایی که اکنون استاندارد صنعتی برای توسعه برنامهها هستند، آشنا شوید و مزایا و تفاوتهای آنها را با یکدیگر به خاطر بسپارید. . و سخنرانی ما به پایان رسید :) فراموش نکنید که امروز یکی دو مشکل را حل کنید! دوباره می بینمت! :)
GO TO FULL VERSION