JSON (JavaScript Object Notation) ایک متن پر مبنی ڈیٹا کے تبادلے کا فارمیٹ ہے جو JavaScript آبجیکٹ نحو پر مبنی ہے۔ یہ ہر جگہ استعمال ہوتا ہے: REST APIs اور کنفیگریشن فائلوں سے لے کر ڈیٹابیسز اور موبائل ایپلیکیشنز میں ڈیٹا ذخیرہ کرنے تک۔ سرکاری JSON ویب سائٹ کے مطابق، فارمیٹ زبان سے آزاد ہے اور تقریباً تمام جدید پلیٹ فارمز کے ذریعے تعاون یافتہ ہے۔ JSON کلائنٹ اور سرور کے درمیان ڈیٹا کی منتقلی کا حقیقی معیار بن گیا ہے۔
اہم نکات
JSON ساختہ ڈیٹا کی نمائندگی کے لیے ایک متن کا فارمیٹ ہے، جو JavaScript نحو پر مبنی ہے۔ JavaScript میں اس کی ابتدا کے باوجود، فارمیٹ مکمل طور پر زبان سے آزاد ہے — تمام مقبول پروگرامنگ زبانوں کے لیے پارسرز اور سیریلائزر موجود ہیں۔
JSON کی تاریخ 2000 کی دہائی کے اوائل میں شروع ہوئی، جب Douglas Crockford نے ڈیٹا کے تبادلے کے لیے JavaScript نحو کا ایک ذیلی سیٹ نکالا۔ 2013 میں، فارمیٹ کو ECMA-404 کے طور پر معیاری بنایا گیا، اور بعد میں ISO/IEC 21778:2017 کے طور پر۔ نام JavaScript Object Notation کا مخفف ہے۔
JSON کا بنیادی فائدہ اس کا کم سے کم نحو ہے۔ ڈیٹا کو بیان کرنے کے لیے صرف چھ اقسام استعمال ہوتی ہیں: سٹرنگ، نمبر، بولین، null، ارے اور آبجیکٹ۔ یہ ایپلیکیشنز میں استعمال ہونے والے کسی بھی ڈیٹا کے ڈھانچے کی نمائندگی کرنے کے لیے کافی ہے۔
JSON نحو انتہائی سادہ ہے: ڈیٹا کلید-قدر کے جوڑوں کے طور پر پیش کیا جاتا ہے، جہاں کلید ڈبل کوٹس میں ایک سٹرنگ ہے، اور قدر چھ بنیادی اقسام میں سے ایک ہے۔ آبجیکٹ گھنگریالے بریکٹوں میں بند ہوتے ہیں، ارے مربع بریکٹوں میں۔ سٹرنگز کو ڈبل کوٹس استعمال کرنا چاہیے؛ سنگل کوٹس کی اجازت نہیں ہے۔
JSON میں اعداد صحیح یا فلوٹنگ پوائنٹ، مثبت یا منفی، ایکسپونینشل نوٹیشن کے ساتھ ہو سکتے ہیں۔ بولین قدریں true اور false کے لٹرلز سے ظاہر کی جاتی ہیں، اور قدر کی عدم موجودگی null سے ظاہر کی جاتی ہے۔ ارے میں کسی بھی قسم کی قدروں کا ایک ترتیب شدہ سیٹ ہوتا ہے، جس میں نیسٹڈ ارے اور آبجیکٹ شامل ہیں۔
{
"name": "JSON",
"type": "text",
"version": 2024,
"flexible": true,
"extensions": null,
"languages": [
"JavaScript",
"Python",
"Java"
],
"nested": {
"info": "نیسٹڈ سپورٹ"
}
}
| قسم | مثال | وضاحت |
|---|---|---|
| سٹرنگ | “متن” |
ڈبل کوٹس میں، escape ترتیبوں کے ساتھ |
| نمبر | 42 |
صحیح، فلوٹنگ پوائنٹ، ایکسپونینشل |
| بولین | true |
true یا false — کوٹس کے بغیر |
| null | null |
قدر کی عدم موجودگی |
| آبجیکٹ | {} |
کلید-قدر جوڑوں کا غیر ترتیب شدہ سیٹ |
| ارے | [] |
قدروں کی ترتیب شدہ فہرست |
JSON موبائل اور ویب ڈویلپمنٹ میں REST APIs کے لیے ڈیٹا کے تبادلے کا بنیادی فارمیٹ ہے۔ سرور جواب کے باڈی میں JSON بھیجتا ہے، کلائنٹ درخواست کے باڈی میں۔ JSON کے لیے معیاری Content-Type ہیڈر application/json ہے۔
جدید REST APIs سادہ فہرستوں سے لے کر اداروں کے درمیان تعلقات کے ساتھ پیچیدہ نیسٹڈ ڈھانچے تک، ہر قسم کے ڈیٹا کو منتقل کرنے کے لیے JSON کا استعمال کرتی ہیں۔ کلائنٹ لائبریریاں (جیسے JavaScript میں Axios یا Android پر Retrofit) خود بخود JSON کو سیریلائز اور ڈی سیریلائز کرتی ہیں، ڈویلپر کو دستی پارسنگ سے آزاد کرتی ہیں۔
REST APIs میں JSON کا ایک اہم فائدہ استفسار کے پیرامیٹرز کے ذریعے جزوی ڈیٹا کی منتقلی (جزوی جواب) کی صلاحیت ہے، نیز سرور پر اضافی درخواستوں کے بغیر نیسٹڈ وسائل کی حمایت ہے۔
JSON پارسنگ موبائل پلیٹ فارمز پر بلٹ ان ٹولز کا استعمال کرتے ہوئے کی جاتی ہے۔ Android Google کا Gson یا Square کا Moshi استعمال کرتا ہے، iOS JSONDecoder کے ساتھ Codable پروٹوکول استعمال کرتا ہے۔ ہر پلیٹ فارم JSON کو مقامی آبجیکٹ میں اور واپس تبدیل کرنے کے لیے آسان ٹولز فراہم کرتا ہے۔
Android پر، مقبول طریقہ Gson یا Moshi کا استعمال کرتا ہے۔ بس @SerializedName تشریحات کے ساتھ ایک ڈیٹا کلاس کی وضاحت کریں اور ڈی سیریلائزیشن کے لیے fromJson کو کال کریں۔ لائبریری خود بخود JSON فیلڈ کے ناموں کو کلاس کی خصوصیات سے مماثل کرتی ہے۔
import com.google.gson.Gson
import com.google.gson.annotations.SerializedName
data class User(
@SerializedName("id") val id: Int,
@SerializedName("name") val name: String,
@SerializedName("email") val email: String
)
fun parseJson(jsonString: String): User {
val gson = Gson()
return gson.fromJson(jsonString, User::class.java)
}
iOS پر، JSONDecoder کے ساتھ بلٹ ان Codable پروٹوکول استعمال ہوتا ہے۔ ڈیٹا کا ڈھانچہ Codable کے مطابق struct کے طور پر اعلان کیا جاتا ہے، جس کے بعد JSON ایک سطر میں پارس ہو جاتا ہے۔ JSONEncoder ریورس سیریلائزیشن کرتا ہے — سرور کو بھیجنے کے لیے آبجیکٹ کو JSON میں تبدیل کرتا ہے۔
import Foundation
struct User: Codable {
let id: Int
let name: String
let email: String
}
func parseJSON(from data: Data) throws -> User {
let decoder = JSONDecoder()
return try decoder.decode(User.self, from: data)
}
JSON اور XML ساختہ ڈیٹا کی منتقلی کے دو اہم فارمیٹس ہیں۔ JSON سادگی اور کارکردگی میں جیتتا ہے، XML سختی اور توثیق میں۔ ان کے درمیان انتخاب پروجیکٹ کی ضروریات پر منحصر ہے: REST APIs زیادہ کثرت سے JSON استعمال کرتی ہیں، اسکیموں والی پیچیدہ دستاویزات XML استعمال کرتی ہیں۔
XML کو ہر عنصر کے لیے بند ہونے والے ٹیگز کی ضرورت ہوتی ہے، جس سے JSON کے مقابلے میں ڈیٹا کا سائز 2-3 گنا بڑھ جاتا ہے۔ ایک ہی وقت میں، XML نام کی جگہوں، XSD اسکیموں، صفات اور XSLT تبدیلی کو سپورٹ کرتا ہے، جو اسے دستاویز کے انتظام اور انٹرپرائز سسٹم انٹیگریشن کے کاموں کے لیے زیادہ طاقتور بناتا ہے۔
| خصوصیت | JSON | XML |
|---|---|---|
| نحو | کم سے کم، کلید-قدر | ٹیگ پر مبنی، کھلنے اور بند ہونے والے ٹیگز |
| ڈیٹا کا سائز | کمپیکٹ | JSON سے 2-3 گنا بڑا |
| ڈیٹا کی اقسام | چھ بنیادی اقسام | صرف متن، اسکیموں کے ذریعے اقسام |
| توثیق | کوئی بلٹ ان نہیں، JSON Schema کے ذریعے | XSD — سخت اور پختہ |
| نام کی جگہیں | کوئی نہیں | مکمل نام کی جگہ کی حمایت |
| پارسنگ کی رفتار | اعلی | پیچیدگی کی وجہ سے کم |
مثالیں موبائل ڈویلپمنٹ میں JSON کے ساتھ عام کارروائیوں کو ظاہر کرتی ہیں: API جوابات کو پارس کرنا، بھیجنے کے لیے JSON بنانا اور نیسٹڈ ڈھانچے پر کارروائی کرنا۔ ان نمونوں کو سمجھنا کسی بھی موبائل ایپلیکیشن ڈویلپر کے لیے ضروری ہے۔
JavaScript میں، JSON.stringify ایک آبجیکٹ کو JSON سٹرنگ میں تبدیل کرتا ہے۔ دوسری دلیل انتخابی سیریلائزیشن کے لیے کلیدوں کی ایک ارے یا ایک ریپلیسر فنکشن ہو سکتی ہے۔ تیسری دلیل فارمیٹنگ کے لیے انڈینٹیشن سیٹ کرتی ہے۔
interface Order {
id: string;
items: OrderItem[];
total: number;
createdAt: string;
}
const order: Order = {
id: 'ord_001',
items: [{ product: 'phone', quantity: 2 }],
total: 1599.98,
createdAt: '2026-07-03T10:00:00Z'
};
const jsonString = JSON.stringify(order, null, 2);
Moshi لائبریری کے ساتھ Kotlin میں، نیسٹڈ JSON آبجیکٹ کو نیسٹڈ ڈیٹا کلاسز کے ذریعے ہینڈل کیا جاتا ہے۔ @Json تشریح JSON فیلڈ کا نام بتاتی ہے اگر یہ کلاس پراپرٹی کے نام سے مختلف ہو۔ ارے کو عنصر کی قسم کے ساتھ List کے طور پر پیش کیا جاتا ہے۔
import com.squareup.moshi.Moshi
import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory
data class ApiResponse(
val status: String,
val data: List<Product>,
val pagination: Pagination
)
data class Product(
val id: Int,
val title: String,
val price: Double
)
data class Pagination(
val page: Int,
val total: Int
)
val moshi = Moshi.Builder()
.add(KotlinJsonAdapterFactory())
.build()
JSON Schema ایک JSON دستاویز کی ساخت کو بیان کرنے کے لیے ایک زبان ہے، جو XML کے لیے XSD کی طرح ہے۔ JSON Schema استعمال کرتے ہوئے، آپ لازمی فیلڈز، ڈیٹا کی اقسام، قدروں کی حدود، سٹرنگ پیٹرن اور نیسٹڈ ڈھانچے کی وضاحت کر سکتے ہیں۔ اسکیما کی توثیق ایپلیکیشن میں کارروائی سے پہلے ڈیٹا کی غلطیوں کا پتہ لگاتی ہے۔
JSON Schema REST APIs کی دستاویزات کے لیے OpenAPI (Swagger) میں، ان پٹ ڈیٹا کی توثیق کے فارمز میں اور جانچ میں بڑے پیمانے پر استعمال ہوتا ہے۔ اسکیما فائل خود ایک JSON دستاویز ہے، جو معیاری JSON پارسرز کو اسے پڑھنے کی اجازت دیتی ہے۔ تمام مقبول پروگرامنگ زبانوں کے لیے آن لائن توثیق کار اور لائبریریاں موجود ہیں۔
موبائل ڈویلپمنٹ میں، JSON Schema جانچ کے دوران سرور کے جوابات کی توثیق کرنے اور کنفیگریشن فائلوں کو چیک کرنے کے لیے استعمال ہوتا ہے۔ Android پر network-validator اور json-schema-validator جیسی لائبریریاں توثیق کو براہ راست ڈویلپمنٹ کے عمل میں شامل کرنے کی اجازت دیتی ہیں، ابتدائی مراحل میں غلطیوں کو روکتی ہیں۔
اکثر پوچھے گئے سوالات
JSON چھ اقسام کو سپورٹ کرتا ہے: سٹرنگ (ڈبل کوٹس میں)، نمبر (صحیح اور فلوٹنگ پوائنٹ)، بولین (true/false)، null، آبجیکٹ ({} میں کلید-قدر کے جوڑے) اور ارے ([] میں قدروں کی فہرست)۔ یہ ایپلیکیشنز میں کسی بھی ڈیٹا کے ڈھانچے کے لیے کافی ہے۔
نہیں، JSON معیار کمنٹس کو سپورٹ نہیں کرتا۔ اگر آپ کو کمنٹس کی ضرورت ہے، تو JSON5 (توسیع شدہ JSON) استعمال کریں یا ایک وضاحتی فیلڈ شامل کریں، مثال کے طور پر “_comment”: “وضاحت”۔ کچھ ٹولز، جیسے VS Code، کنفیگریشن JSON فائلوں میں کمنٹس کو سپورٹ کرتے ہیں، لیکن یہ ایک غیر معیاری توسیع ہے۔
JSONB PostgreSQL میں JSON کے لیے ایک بائنری اسٹوریج فارمیٹ ہے۔ ٹیکسٹ JSON کے برعکس، JSONB پروسیسنگ میں تیز تر ہے، انڈیکسنگ (GIN انڈیکس) کو سپورٹ کرتا ہے اور کلید کی انفرادیت کو یقینی بناتا ہے۔ تاہم، JSONB شامل کردہ میٹا ڈیٹا کی وجہ سے ڈسک پر زیادہ جگہ لیتا ہے۔
فوری جانچ کے لیے JSONLint (jsonlint.com)، try-catch کے ساتھ JavaScript میں بلٹ ان JSON.parse()، یا IDE پلگ ان استعمال کریں۔ توثیق میں صحیح کوٹس، بریکٹ بند ہونے اور اقسام کی مطابقت کی جانچ شامل ہے۔ پیچیدہ اسکیموں کے لیے، JSON Schema Validator استعمال کریں۔
JSON تفصیلات میں کوئی حد نہیں ہے۔ عملی طور پر، سائز ڈیوائس میموری اور پارسر کی صلاحیتوں سے محدود ہے۔ موبائل ایپلیکیشنز کے لیے، فی جواب 1-2 MB سے تجاوز نہ کرنے کی سفارش کی جاتی ہے، اور بڑے ڈیٹا کے لیے پیجینیشن یا سٹریمنگ استعمال کریں۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں