آموزش پارس کردن json در iOS با استفاده از پروتکل Codable

اپ هایی که در دنیای امروز وجود دارند تقریبا همه از وب سرویس استفاده می کنند. وب سرویس اطلاعات را به صورت JSON به ما بر می‌گرداند. ما در سمت کلاینت باید این اطلاعات را تجزیه کرده و به صورت شی تبدیل کنیم تا در درون اپ به راحتی استفاده کنیم. این در واقع به صورت مشترک در تمام پلتفرم‌های سمت کلاینت رخ می‌دهد.

پارس کردن json در iOS

ما در برنامه نویسی iOS به دو روش کلی عمل می‌کنیم یا بصورت دستی عمل تجزیه را انجام می‌دهیم یا با استفاده از کتابخانه و پروتکل Codable که در حال حاضر رایج است.

  • روش اول به صورت دستی 

این روش به این صورت است ما اطلاعات رو طی چندین مرحله تجزیه و در نهایت شی خودمون رو می‌سازیم. اما بزرگ‌ترین مشکل این روش این است که هم زمان زیادی از توسعه دهنده می‌گیرد و هم حجم کد بالا میرود در تکه کد زیر یک نمونه از این روش رو مشاهده می‌کنید.

برای این منظور یک Playground در Xcode ایجاد کنید و قطعه کد زیر را در آن وارد کنید.

در کد بالا ما ابتدا یک JSON ساده ساختیم که به عنوان نمونه استفاده کنیم. بعد JSON رو توسط JSONSerialization تبدیل به دیکشنری می‌کنیم و اینجا دقیقا همون جایی است که مقدارها رو بر اساس کلید استخراج می‌کنیم مثلا اگر به نحوه گرفتن نام نگاه کنید که من مقدار کلید name را گرفته و به رشته تبدیل کردم بقیه هم به این ترتیب این کار در صورت که حجم JSON زیاد باشد زمان زیادی را می‌گیرد و همینطور خطایابی را سخت‌تر می‌کند.

  • روش دوم با استفاده از Codable

این روش که تقریبا در حال فراگیر شدن است ما با استفاده از یک پروتکل که به struct خود اضافه می‌کنیم مدل را تجزیه می‌کنیم برای درک بهتر به کد زیر دقت کنید.

نکته : این پروتکل شامل Decodable و هم Encodable است. که چون ما فقط می‌خواهیم اطلاعات را به شی تبدیل کنیم از Decodable استفاده می‌کنیم ولی اگر قصد داشتیم شی را در ios به JSON تبدیل کنیم باید از Encodable هم استفاده کنیم این یعنی باید Codable را اضافه کنیم.

خب همانطور که در کد بالا مشاهده می‌کنید ما یک struct ساخته و پروتکل رو به او اضافه می‌کنیم بعد property های شی را می‌سازیم. حالا اینجا یک نکته خیلی مهم وجود دارد و اینکه ما می‌خواهیم چه کلیدهایی رو استخراج کنیم اون‌ها رو توسط یک Enum که از پروتکل CodingKey پیروی می‌کند تعیین می‌کنیم مثل: CodingKeys و infoKeys. حالا توسط یک init شروع به تجزیه و مقدار دادن property ها می‌کنیم. من اول Container اصلی رو تجزیه می‌کنم تا نام رو بتونم بردارم بعد دوباره Container دومی یعنی info را باز می‌کنم و اطلاعات شغل و سن رو بر می‌دارم. حالا در اخر من یک decoder ساخته و از طریق تابع آن شی خودم را decode می‌کنم و در نهایت آن را چاپ می‌کنم.

اگر شما نیاز به مطالعه‌ی بیشتر درباره ی Codable دارید می‌توانید صفحه توسعه دهندگان اپل رو یاد بگیرید.

پارس json در iOS

اما به عنوان یک راه تقلب اگر پارس کردن با Codable برای شما دشوار است  میتونید از سایت app.quicktype استفاده کنید. شما ابتدا json را وارد می کنید و struct را برا اساس json وارد شده دریافت می کنید.

پارس کرد json در برنامه نویسی ای او اس

خب این از دو روش رایجی که برای تجزیه و پارس کردن json در iOS و ساخت شی استفاده می‌شود شما می‌توانید یکی را انتخاب کنید ولی تقریبا الان همه از Codable استفاده می‌کنند.

در پایان اگر ایده نظر و یا پیشنهادی دارید منتظر دیدن آن در بخش نظرات هستم.

مطالب مرتبط در برنامه نویسی iOS

مهدی محجوبی
توسعه دهنده iOS
دیدگاه ها

ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

صفحه اینستاگرام کانال تلگرام