- docx (مائیکروسافٹ ورڈ فارمیٹ)؛
- پی ڈی ایف (ایڈوب فارمیٹ)؛
- mobi (عام طور پر Amazon 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 JavaScript اشیاء کی نمائندگی کرتا ہے، یہ درج ذیل JavaScript ڈیٹا فارمیٹس کو سپورٹ کرتا ہے:
- ڈور
- نمبرز
- اشیاء
- صفوں
- بولین (سچ اور غلط)؛
- خالی.
-
انسانی پڑھنے کے قابل فارمیٹ۔ اگر آپ کا آخری صارف انسان ہے تو یہ ایک واضح فائدہ ہے۔ مثال کے طور پر، فرض کریں کہ آپ کے سرور کے پاس پروازوں کے شیڈول کے ساتھ ڈیٹا بیس ہے۔ ایک انسانی صارف، گھر میں اپنے کمپیوٹر پر بیٹھا، ویب ایپلیکیشن کا استعمال کرتے ہوئے اس ڈیٹا بیس سے ڈیٹا کی درخواست کرتا ہے۔ چونکہ آپ کو اس فارمیٹ میں ڈیٹا فراہم کرنے کی ضرورت ہے جسے وہ سمجھ سکے، JSON ایک بہترین حل ہے۔
-
سادگی۔ یہ بہت آسان ہے :) اوپر، ہم نے دو JSON فائلوں کی مثال دی ہے۔ اور یہاں تک کہ اگر آپ نے JavaScript کے بارے میں نہیں سنا ہے (جاوا اسکرپٹ اشیاء کو چھوڑ دیں)، تو آپ وہاں بیان کردہ اشیاء کی ترتیب کو آسانی سے سمجھ سکتے ہیں۔
JSON کی پوری دستاویز ایک ویب صفحہ پر مشتمل ہے جس میں کچھ تصاویر ہیں۔ -
وسیع پیمانے پر استعمال۔ JavaScript غالب فرنٹ اینڈ زبان ہے، اور اس کی اپنی ضروریات ہیں۔ JSON کا استعمال ضروری ہے۔ لہذا، ویب سروسز کی ایک بڑی تعداد JSON کو ڈیٹا ایکسچینج فارمیٹ کے طور پر استعمال کرتی ہے۔ ہر جدید IDE JSON فارمیٹ (بشمول IntelliJ IDEA) کو سپورٹ کرتا ہے۔ JSON کے ساتھ کام کرنے کے لیے تمام قسم کی پروگرامنگ زبانوں کے لیے لائبریریوں کا ایک گروپ لکھا گیا ہے۔
YAML
ابتدا میں، YAML کا مطلب "ابھی ایک اور مارک اپ لینگویج" تھا۔ جب یہ شروع ہوا تو اسے XML کے مدمقابل کے طور پر رکھا گیا۔ اب، وقت گزرنے کے ساتھ، YAML کا مطلب ہو گیا ہے "YAML مارک اپ لینگویج نہیں ہے"۔ یہ بالکل کیا ہے؟ آئیے تصور کریں کہ ہمیں کمپیوٹر گیم میں کرداروں کی نمائندگی کرنے کے لیے 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 فائل ہے :)
-
کومپیکٹنس۔ فائل کا ڈھانچہ خالی جگہوں کا استعمال کرتے ہوئے بنایا گیا ہے: بریکٹ یا کوٹیشن مارکس استعمال کرنے کی ضرورت نہیں ہے۔
-
پروگرامنگ زبانوں کے لیے مقامی ڈیٹا ڈھانچے کے لیے معاونت۔ JSON اور بہت سے دوسرے فارمیٹس پر YAML کا بہت بڑا فائدہ یہ ہے کہ یہ مختلف ڈیٹا ڈھانچے کو سپورٹ کرتا ہے۔ ان میں شامل ہیں:
-
!!نقشہ
کلیدی قدر کے جوڑوں کا ایک غیر ترتیب شدہ سیٹ جس میں نقل نہیں ہو سکتی۔ -
!!omap
کلیدی قدر کے جوڑوں کی ترتیب شدہ ترتیب جس میں ڈپلیکیٹس نہیں ہو سکتے۔ -
!!جوڑے:
کلیدی قدر کے جوڑوں کی ترتیب شدہ ترتیب جس میں ڈپلیکیٹ ہو سکتے ہیں۔ - !!
ایک دوسرے کے برابر نہ ہونے والی اقدار کی ایک غیر ترتیب شدہ ترتیب سیٹ کریں۔ - !!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 فائل میں تاریخ (ملی سیکنڈ کی شکل میں) یا جاوا اسکرپٹ کوڈ کا ایک ٹکڑا بھی شامل ہو سکتا ہے۔ مقبول MongoDB NoSQL ڈیٹا بیس BSON فارمیٹ میں معلومات کو محفوظ کرتا ہے۔پوزیشن پر مبنی پروٹوکول
کچھ حالات میں، ہمیں بھیجے گئے ڈیٹا کی مقدار کو کافی حد تک کم کرنے کی ضرورت ہے (مثال کے طور پر، اگر ہمارے پاس بہت زیادہ ڈیٹا ہے اور بوجھ کو کم کرنے کی ضرورت ہے)۔ اس صورت حال میں، ہم پوزیشن پر مبنی پروٹوکول استعمال کر سکتے ہیں، یعنی پیرامیٹر کے ناموں کے بغیر پیرامیٹر ویلیوز بھیجیں۔"Leo Tolstoy" | "Anna Karenina" | 1873
اس فارمیٹ میں ڈیٹا مکمل JSON فائل سے کئی گنا کم جگہ لیتا ہے۔ بلاشبہ، دوسرے سیریلائزیشن فارمیٹس ہیں، لیکن آپ کو ابھی ان سب کو جاننے کی ضرورت نہیں ہے :) یہ اچھا ہے اگر آپ ایپلی کیشنز تیار کرتے وقت صنعت کے موجودہ معیاری فارمیٹس سے واقف ہوں، اور ان کے فوائد کو یاد رکھیں اور یہ کہ وہ ایک سے کس طرح مختلف ہیں۔ ایک اور اور اس کے ساتھ ہی ہمارا سبق ختم ہو جاتا ہے :) آج ایک دو کام حل کرنا نہ بھولیں! اگلے وقت تک! :)
GO TO FULL VERSION