موبائل ایپس میں پارسنگ: جوہر، ڈیٹا کی شکلیں اور عمل

مصنف: IT Sectr اشاعت: 2026-03-08 مطالعے کا وقت: 8 منٹ

پارسنگ ساختہ ڈیٹا کے نحوی تجزیے کا عمل ہے، جو JSON، XML، CSV یا Protobuf سے معلومات نکال کر ایپلیکیشن میں استعمال کرتا ہے۔ Square Engineering (2025) کے مطابق، پارسنگ کی حکمت عملی کا انتخاب براہ راست موبائل ایپلیکیشن کی کارکردگی کو متاثر کرتا ہے۔ اسٹریمنگ پارسنگ پوری دستاویز کو میموری میں لوڈ کیے بغیر میگا بائٹس ڈیٹا پر کارروائی کرنے کی اجازت دیتا ہے۔

اہم نکات

  • پارسنگ — لازمی ٹائپنگ کے بغیر ڈیٹا نکالنے کے لیے ساختہ متن کو ٹوکنز میں توڑنا۔
  • JSON — iOS اور Android موبائل ایپس میں REST API کے لیے سب سے مقبول فارمیٹ۔
  • اسٹریمنگ پارسنگ بڑی فائلوں اور RSS فیڈز پر کارروائی کرتے وقت میموری بچاتا ہے۔
  • کوڈ جنریشن — کمپائل وقت پر پارسر تیار کرتا ہے، رن ٹائم کو 2-4 گنا تیز کرتا ہے۔
  • Protobuf — ایک بائنری فارمیٹ، JSON سے 3-6 گنا زیادہ کمپیکٹ اور پارس کرنے میں تیز۔

پارسنگ کیا ہے؟

پارسنگ (نحوی تجزیہ) حروف کی ترتیب کو پروگرامیٹک پروسیسنگ کے لیے موزوں ساختہ نمائندگی میں تبدیل کرنے کا عمل ہے۔ موبائل ڈویلپمنٹ کے تناظر میں، پارسنگ سے مراد سرور کے جوابات، کنفیگریشن فائلوں، مقامی کیش اور وسائل کی فائلوں پر کارروائی کرنا ہے۔ ہر فارمیٹ کو اپنے نقطہ نظر کی ضرورت ہوتی ہے: JSON — ہلکا اور SDK میں شامل، XML — XSD اسکیما کی تصدیق کے ساتھ سخت، CSV — جدولی ڈیٹا کے لیے کم سے کم، Protobuf — سخت اسکیما کے ساتھ بائنری۔

نحوی تجزیہ کے مراحل

کوئی بھی پارسر، فارمیٹ سے قطع نظر، تین مراحل سے گزرتا ہے۔ لغوی تجزیہ خام متن کو ٹوکنز میں تقسیم کرتا ہے: کنجیاں، سٹرنگز، نمبرز، جدا کرنے والے اور تبصرے۔ نحوی تجزیہ گرامر کی درستگی کی جانچ کرتا ہے — JSON میں بریکٹ کا توازن، XML میں ٹیگ کی درست نیسٹنگ۔ آؤٹ پٹ ساخت کی تشکیل ایک آبجیکٹ نمائندگی بناتا ہے: JSONObject، Map، یا مزید پروسیسنگ کے لیے ٹوکن سٹریم۔ Apple (2026) کے مطابق، iOS پر شامل Foundation پارسر سست پارسنگ استعمال کرتا ہے — یہ صرف JSON کے آغاز کی تصدیق کرتا ہے، وسائل بچاتا ہے۔

دستی پارسنگ بمقابلہ خودکار لائبریریاں

دستی پارسنگ (JSONSerialization, XmlPullParser) عمل پر مکمل کنٹرول دیتا ہے اور غیر معیاری فارمیٹس یا ہر فیلڈ کی کسٹم تصدیق کی ضرورت ہونے پر مفید ہے۔ خودکار لائبریریاں (JSONDecoder, Moshi, kotlinx.serialization) ڈویلپمنٹ کو تیز کرتی ہیں لیکن خرابی سے نمٹنے کی تفصیلات چھپاتی ہیں۔ انتخاب کا انحصار ضروریات پر ہے: اگر ڈیٹا کی ساخت متحرک یا پہلے سے نامعلوم ہے — دستی پارسنگ بہتر ہے۔ اگر اسکیما طے شدہ ہے — خودکار ڈی سیریلائزیشن کوڈ کو 60-70% کم کرتی ہے۔

پارسنگ ڈی سیریلائزیشن سے کیسے مختلف ہے

پارسنگ ایک وسیع تر کارروائی ہے: اسے سٹریمنگ طریقے سے کیا جا سکتا ہے اور یہ لازمی طور پر ٹائپ شدہ آبجیکٹ نہیں بناتا۔ ڈی سیریلائزیشن پارسنگ کی ایک مخصوص صورت ہے جس کا نتیجہ ہمیشہ مخصوص خصوصیات کی اقسام کے ساتھ ایک معروف کلاس کی مثال ہوتا ہے۔ JSON پارسر دستاویز کو Map یا JsonElement میں توڑتا ہے، جبکہ ڈی سیریلائزر اسی JSON کو معروف فیلڈز اور ان کی اقسام کے ساتھ User، Order یا Product آبجیکٹ میں تبدیل کرتا ہے۔

خصوصیتپارسنگڈی سیریلائزیشن
نتیجہJsonElement، Map، ٹوکن سٹریمٹائپ شدہ آبجیکٹ (User, Order)
سٹریمنگ موڈہاں (SAX, JsonReader)نہیں (پورا آبجیکٹ میموری میں)
ٹائپنگاختیاری، متحرک اقساملازمی، جامد اقسام
مثالXmlPullParser.next()، SAX واقعاتjson.decodeFromString<User>()

اسٹریمنگ پارسنگ ڈی سیریلائزیشن پر پارسنگ کا سب سے بڑا فائدہ ہے۔ Android پر XmlPullParser پڑھتے ہی XML کو پارس کرتا ہے، بغیر پوری دستاویز کو RAM میں لوڈ کیے۔ یہ بڑے API جوابات، سینکڑوں آئٹمز والی RSS فیڈز کو پارس کرنے، یا سرور ڈمپ سے ہزاروں JSON آبجیکٹس کی صف پر کارروائی کرنے کے لیے اہم ہے۔ سٹریمنگ پارسر ٹوکن کے بعد ٹوکن پڑھتا ہے، دستاویز کے سائز سے قطع نظر میموری کی مستقل مقدار استعمال کرتا ہے۔

موبائل ایپس میں JSON پارسنگ

JSON ڈیٹا کے تبادلے کا غالب فارمیٹ ہے۔ iOS پر، شامل JSONSerialization JSON کو Any میں پارس کرتا ہے، جبکہ JSONDecoder براہ راست Codable ساخت میں پارس کرتا ہے۔ Android پر، معیاری org.json دستی پارسنگ کے لیے JSONObject اور JSONArray فراہم کرتا ہے۔ Gson اور Moshi خودکار تبدیلی شامل کرتے ہیں۔ دستی اور خودکار طریقوں کے درمیان انتخاب نیٹ ورکنگ پرت کا پہلا آرکیٹیکچرل فیصلہ ہے۔

kotlin
val jsonString = """{"users":[{"id":1,"name":"Alice"}]}"""
val jsonObject = JSONObject(jsonString)
val usersArray = jsonObject.getJSONArray("users")

for (i in 0 until usersArray.length()) {
    val item = usersArray.getJSONObject(i)
    val id = item.getInt("id")
    val name = item.getString("name")
    // صارف کی پروسیسنگ
}

org.json کے ذریعے دستی پارسنگ اس وقت مفید ہے جواب کی ساخت پہلے سے نامعلوم ہو یا بہت مختلف ہو۔ یہ طریقہ خرابی سے نمٹنے اور نل ایبل فیلڈز پر مکمل کنٹرول دیتا ہے لیکن خودکار ڈی سیریلائزیشن کے مقابلے میں زیادہ بوائلر پلیٹ کوڈ کی ضرورت ہوتی ہے۔ چھوٹے پروجیکٹس یا پروٹوٹائپس کے لیے یہ قابل قبول ہے، لیکن پروڈکشن میں Moshi یا kotlinx.serialization کو ترجیح دی جاتی ہے۔

اسٹریمنگ پارسنگ کے لیے JsonReader

Moshi لائبریری کا JsonReader اسٹریمنگ JSON پارسنگ کے لیے ایک طاقتور ٹول ہے۔ یہ beginObject، nextName، nextString، nextInt اور endObject جیسے طریقوں کا استعمال کرتے ہوئے دستاویز کو ٹوکن کے بعد ٹوکن پڑھتا ہے۔ یہ طریقہ میموری کی مستقل کھپت کے ساتھ کسی بھی سائز کی دستاویزات پر کارروائی کرنے کی اجازت دیتا ہے۔ Google (2026) کے مطابق، JsonReader کے ذریعے اسٹریمنگ پارسنگ پوری دستاویز کو JsonObject میں لوڈ کرنے سے 2-3 گنا تیز ہے اور 80% تک کم میموری استعمال کرتی ہے۔

kotlin
val reader = JsonReader(StringReader(json))
reader.beginObject()
while (reader.hasNext()) {
    val name = reader.nextName()
    when (name) {
        "id" -> val id = reader.nextInt()
        "name" -> val name = reader.nextString()
        "email" -> val email = reader.nextString()
        else -> reader.skipValue()
    }
}
reader.endObject()

مثال JsonReader کو اسٹریمنگ طریقے سے JSON پارس کرتے ہوئے دکھاتی ہے۔ nextName() اور nextInt() کی ہر کال کرسر کو اگلے ٹوکن پر لے جاتی ہے۔ skipValue() بغیر پارس کیے غیر ضروری فیلڈز کو چھوڑ دیتا ہے — خاص طور پر مفید جب JSON میں 50 فیلڈز ہوں لیکن صرف 3 کی ضرورت ہو۔ نتیجہ کم سے کم میموری کھپت اور زیادہ سے زیادہ رفتار ہے۔

XML اور CSV پارسنگ

XML Android پروجیکٹس میں وسائل اور انٹرپرائز ایپلیکیشنز کی SOAP سروسز میں استعمال ہوتا رہتا ہے۔ Android پر، شامل XmlPullParser کم سے کم میموری کھپت کے ساتھ اسٹریمنگ پارسنگ فراہم کرتا ہے — یہ DOM ٹری لوڈ نہیں کرتا بلکہ START_TAG، TEXT، END_TAG واقعات پیدا کرتا ہے۔ iOS ڈیلیگیٹ طریقہ کے ساتھ XMLParser استعمال کرتا ہے: parser(didStartElement:) اور parser(foundCharacters:) طریقے عناصر کو ترتیب وار ہینڈل کرتے ہیں۔

موبائل ڈویلپمنٹ میں CSV

CSV جدولی ڈیٹا برآمد اور درآمد کرنے کا سب سے آسان فارمیٹ ہے۔ موبائل ایپس میں، CSV رپورٹس برآمد کرنے، حوالہ جاتی ڈیٹا (ممالک کی فہرستیں، کرنسیاں، کوڈز) لوڈ کرنے اور آف لائن ڈیٹا سنکرونائزیشن کے لیے استعمال ہوتا ہے۔ سٹریمنگ لائبریریاں CSV پارسنگ کے لیے موزوں ہیں: Apache Commons CSV اور OpenCSV فائلوں کو لائن بہ لائن پروسیس کرتی ہیں، اقدار کے اندر کوٹس اور کوما کو ایسکیپ کرتی ہیں۔ iOS پر، CSV پارسنگ کو NSString.components(separatedBy:) ڈیلیمیٹر طریقہ کے ذریعے کنارے کی صورتوں کو ہینڈل کرتے ہوئے لاگو کیا جا سکتا ہے۔

swift
class CSVParser: NSObject, XMLParserDelegate {
    private var currentItem: [String: String] = [:]
    private var currentElement: String = ""

    func parser(
        _ parser: XMLParser,
        didStartElement elementName: String,
        namespaceURI: String?,
        qualifiedName qName: String?,
        attributes attributeDict: [String: String]
    ) {
        currentElement = elementName
        if elementName == "item" {
            currentItem = [:]
        }
    }

    func parser(_ parser: XMLParser,
                foundCharacters string: String) {
        currentItem[currentElement] = string
    }
}

RSS فیڈ کو پارس کرنے کے لیے iOS پر XMLParser ڈیلیگیٹ کی مثال۔ didStartElement طریقہ ہر کھلنے والے ٹیگ پر کال کیا جاتا ہے، foundCharacters ٹیگز کے درمیان متن کا مواد لوٹاتا ہے، didEndElement عنصر کو مکمل کرتا ہے۔ یہ ایونٹ پر مبنی فن تعمیر DOM ٹری کو میموری میں لوڈ کیے بغیر کسی بھی سائز کے XML پر کارروائی کرنے کی اجازت دیتا ہے — موبائل آلات کے محدود وسائل کے لیے اہم۔

Android کے لیے CSV لائبریریوں کا موازنہ

Android پر، CSV پارسر کا انتخاب ڈیٹا کی مقدار پر منحصر ہے۔ OpenCSV ایک فلوئنٹ API، POJO میپنگ کے لیے اینوٹیشنز اور کسٹم ڈیلیمیٹرز کو سپورٹ کرتا ہے۔ Apache Commons CSV زیادہ نچلی سطح کا ہے لیکن بڑی فائلوں پر تیز ہے۔ سادہ صورتوں (1-2 کالم) کے لیے، ایسکیپ ہینڈلنگ کے ساتھ String.split(",") کے ذریعے دستی پارسنگ کافی ہے۔ بڑی CSV فائلوں والے پروڈکشن پروجیکٹس کے لیے، OpenCSV تجویز کیا جاتا ہے۔

Protobuf اور اسٹریمنگ پارسنگ

Google کا Protocol Buffers ایک بائنری سیریلائزیشن فارمیٹ ہے جو رفتار اور کمپیکٹ پن میں JSON سے بہتر ہے۔ Protobuf پیغام برابر JSON کے مقابلے میں 3-6 گنا کم جگہ لیتا ہے اور اپنے بائنری فارمیٹ اور سخت اسکیما کی بدولت 4-10 گنا تیزی سے پارس ہوتا ہے۔ اہم خرابیاں انسانی پڑھنے کی اہلیت کا فقدان اور protoc کمپائلر کے ذریعے .proto فائلوں سے کوڈ تیار کرنے کی ضرورت ہے۔

اسٹریمنگ Protobuf پارسنگ CodedInputStream کے ذریعے لاگو کی جاتی ہے — کلائنٹ پورا پیغام لوڈ کیے بغیر آنے والے فیلڈز کو پڑھتا ہے۔ ہر فیلڈ کا ایک ٹیگ (نمبر + قسم) ہوتا ہے، اور پارسر نامعلوم فیلڈز کو چھوڑ سکتا ہے۔ Google (2026) کے مطابق، اسٹریمنگ Protobuf پارسنگ 1 MB سے پیغامات پر کارروائی کرتے وقت 90% تک کم میموری استعمال کرتی ہے، جو محدود RAM والے موبائل آلات کے لیے اہم ہے۔ Protobuf-lite Android کے لیے ایک خاص ورژن ہے، جو تیار کردہ کوڈ کے سائز کے لیے بہتر بنایا گیا ہے۔

اکثر پوچھے گئے سوالات

JSONSerialization اور JSONDecoder میں کیا فرق ہے؟

JSONSerialization دستی پارسنگ ہے جو ٹائپنگ کے بغیر Any (Dictionary, Array) لوٹاتا ہے۔ JSONDecoder Codable اقسام میں خودکار ڈی سیریلائزیشن ہے۔ JSONSerialization متحرک ڈھانچے کے لیے لچک فراہم کرتا ہے، جبکہ JSONDecoder معروف اسکیما کے لیے رفتار اور قسم کی حفاظت فراہم کرتا ہے۔ پروڈکشن میں، JSONDecoder تجویز کیا جاتا ہے۔

پوری دستاویز لوڈ کرنے کے بجائے اسٹریمنگ پارسنگ کب استعمال کروں؟

اسٹریمنگ پارسنگ 500 KB سے زیادہ کے جوابات، RSS/Atom فیڈز پارس کرتے وقت اور محدود میموری والے آلات پر فائلیں پروسیس کرتے وقت لازمی ہے۔ 100 KB تک کے عام API جوابات کے لیے، JSONDecoder یا Moshi کے ذریعے خودکار ڈی سیریلائزیشن بہتر ہے — صاف کوڈ اور تیز تر ڈویلپمنٹ۔

Android SDK میں بطور ڈیفالٹ کون سے ڈیٹا فارمیٹس سپورٹ ہوتے ہیں؟

Android SDK میں org.json (JSONObject, JSONArray)، XmlPullParser (XML)، اور android.util.JsonReader شامل ہیں۔ CSV، YAML اور Protobuf کے لیے اضافی لائبریریوں کی ضرورت ہے: CSV کے لیے OpenCSV، YAML کے لیے SnakeYAML، Protobuf کے لیے protobuf-javalite۔

سرور سے ناقص JSON ملنے پر کیا کریں؟

kotlinx.serialization میں lenient موڈ یا Moshi میں JsonReader.setLenient(true) استعمال کریں — یہ末尾 کے کوما، غیر ایسکیپڈ کوٹس اور سنگل لائن تبصروں کو معاف کرتا ہے۔ مکمل تصدیق کے لیے، Pact یا Spring Cloud Contract کے ذریعے کنٹریکٹ ٹیسٹنگ لاگو کریں۔

SAX پارسنگ کیا ہے اور یہ کہاں استعمال ہوتی ہے؟

SAX (Simple API for XML) ایک اسٹریمنگ XML پارسر ہے جو دستاویز کو اسکین کرتے وقت startElement، characters، endElement واقعات پیدا کرتا ہے۔ یہ Android پر XmlPullParser اور iOS پر XMLParser کے ذریعے لاگو کیا جاتا ہے۔ یہ RSS ریڈرز، آف لائن ڈیٹا سنکرونائزیشن اور SVG فائل پروسیسنگ میں استعمال ہوتا ہے۔

خلاصہ

  • پارسنگ — ساختہ ڈیٹا پر کارروائی کرنے کا ایک بنیادی عمل، ڈی سیریلائزیشن سے وسیع تر: سٹریمنگ ہو سکتا ہے اور ٹائپنگ کی ضرورت نہیں۔
  • JSON — موبائل ڈویلپمنٹ میں REST API کے لیے بنیادی فارمیٹ؛ JSONSerialization (iOS) اور org.json (Android) کے ذریعے سپورٹ شدہ۔
  • اسٹریمنگ پارسنگ (JsonReader, XmlPullParser, SAX) میموری بچاتا ہے اور بڑی دستاویزات کے لیے اہم ہے۔
  • Protobuf — تیز ترین اور سب سے کمپیکٹ فارمیٹ، زیادہ بوجھ اور کراس پلیٹ فارم سسٹمز کے لیے تجویز کردہ۔
  • Android پر XmlPullParser اور iOS پر XMLParser — ایونٹ پر مبنی ماڈل کے ساتھ معیاری سٹریمنگ XML پارسنگ ٹولز۔
  • CSV پارسرز (OpenCSV, Apache Commons CSV) رپورٹ برآمد کرنے اور حوالہ جاتی ڈیٹا لوڈ کرنے کے لیے مفید۔
  • دستی اور خودکار پارسنگ کے درمیان انتخاب کا انحصار ڈیٹا کے سائز، اسکیما کی تبدیلی اور ڈیوائس میموری کی ضروریات پر ہے۔

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں