آموزش

راهنمای کار با داده‌های JSON در پایتون همراه با مثال

در این آموزش یاد می‌گیری چطور با JSON در پایتون کار کنی؛ از جمله سریالایز (serialization)، دیسریالایز (deserialization)، قالب‌بندی داده‌ها، بهینه‌سازی عملکرد، کار با APIها، و همچنین درک محدودیت‌های JSON و جایگزین‌های اون.

تاریخ انتشار:
15 شهریور 1405
پایتون
6 دقیقه
کاربرهای فینکا در چه شرکت‌هایی مشغول به کار هستند؟

فرمت JSON (مخفف JavaScript Object Notation) یه فرمت سبک برای تبادل داده‌ست که به یه انتخاب خیلی محبوب تو خیلی از زبان‌های برنامه‌نویسی از جمله پایتون تبدیل شده. سینتکس ساده و قابلیت نمایش ساختارهای داده‌ی پیچیده باعث شده JSON به یه بخش مهم در توسعه وب مدرن تبدیل بشه و از APIها گرفته تا برنامه‌های وب سمت کاربر (کلاینت) رو پشتیبانی کنه.

در این آموزش، اصول کار با JSON در پایتون رو بررسی می‌کنیم؛ از جمله سریالایز (serialization) و دیسریالایز کردن (deserialization)، خوندن و نوشتن فایل‌های JSON، قالب‌بندی و یه سری موارد دیگه. در پایان این آموزش تو می‌تونی:

  • فرمت JSON و مزایا و معایبش رو به خوبی درک کنی.
  • موارد استفاده از JSON رو بشناسی و بتونی اون رو با جایگزین‌های رایجش مقایسه کنی.
  • داده‌های JSON رو در پایتون به شکل مؤثری سریالایز و دیسریالایز کنی.
  • با داده‌های JSON در زبان برنامه‌نویسی پایتون کار کنی.
  • داده‌های JSON رو در پایتون با استفاده از کتابخونه json قالب‌بندی کنی.
  • عملکرد برنامه‌ت رو موقع کار با داده‌های JSON بهینه‌سازی کنی.
  • داده‌های JSON رو در توسعه APIها مدیریت کنی.

فرمت JSON چیه؟

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

بهترین کاربرد JSON زمانیه که نیاز به تبادل داده بین برنامه‌های تحت وب داریم؛ مثلاً وقتی یه فرم رو در یه سایت پر می‌کنی و اطلاعاتت برای پردازش به سرور فرستاده می‌شه.

فرمت JSON برای این سناریو بی‌نظیره چون سبکه، کارایی بالایی داره و نسبت به فرمت‌های دیگه‌ای مثل XML به پهنای باند و فضای ذخیره‌سازی خیلی کمتری نیاز داره. علاوه بر این، JSON از ساختارهای داده‌ی پیچیده مثل اشیاء و آرایه‌های تودرتو پشتیبانی می‌کنه، که باعث می‌شه نمایش و تبادل داده‌های ساختاریافته بین سیستم‌های مختلف خیلی راحت‌تر بشه. چند تا از کاربردهای دیگه فرمت JSON شامل این موارد می‌شه:

  • رابط برنامه‌نویسی اپلیکیشن (API): فرمت JSON معمولاً برای ساخت APIها استفاده می‌شه که به سیستم‌ها و برنامه‌های مختلف اجازه می‌دن با هم ارتباط برقرار کنن. مثلاً خیلی از APIهای تحت وب از JSON به عنوان فرمت اصلی تبادل داده استفاده می‌کنن، که باعث می‌شه هماهنگی و یکپارچه‌سازی با زبان‌ها و پلتفرم‌های مختلف آسون بشه.
  • فایل‌های پیکربندی: فرمت JSON یه روش ساده و خوانا برای ذخیره و خوندن تنظیمات در اختیارمون می‌ذاره. این تنظیمات می‌تونه شامل پیکربندی برنامه باشه؛ مثل چیدمان رابط کاربری یا ترجیحات کاربر.
  • اینترنت اشیا (IoT): دستگاه‌های اینترنت اشیا معمولاً حجم زیادی داده تولید می‌کنن که می‌شه با استفاده از JSON به شکل بهینه‌تری اون‌ها رو بین سنسورها و دستگاه‌های دیگه ذخیره و منتقل کرد.

در این مثال، یه شیء JSON داریم که نمایانگر یه شخصه. این شیء چند تا ویژگی داره: name، age، email و is_employee. ویژگی hobbies یه آرایه‌ست که توش سه تا رشته متنی قرار داره. ویژگی address هم خودش یه شیءه که چند تا ویژگی مثل street، city، state و zip داره.

یادت باشه که داده‌های JSON معمولاً به صورت مجموعه‌ای از جفت‌های کلید-مقدار قالب‌بندی می‌شن؛ به این شکل که کلید همیشه یه رشته متنیه و مقدار می‌تونه انواع مختلفی مثل رشته، عدد، بولین، آرایه یا یه شیء دیگه باشه.

مزایا و معایب استفاده از JSON

در ادامه، بعضی از نکات مثبت و منفی کار با JSON رو بررسی می‌کنیم.

مزایای کار با فایل JSON:

بعضی از مهم‌ترین مزایای JSON این مواردن:

  • سبک و خوانا بودن: فایل‌های JSON خوانا هستن و درک ساختارشون حتی برای افراد غیرفنی هم آسونه. از طرفی خیلی سبک هستن، یعنی می‌تونن به راحتی از طریق اینترنت منتقل بشن.
  • قابلیت تعامل: فایل‌های JSON قابلیت تعامل بالایی دارن، یعنی می‌شه به راحتی اون‌ها رو بین سیستم‌ها و پلتفرم‌های مختلف تبادل کرد. دلیلش هم اینه که JSON یه فرمت استاندارد با پشتیبانی گسترده‌ست و خیلی از برنامه‌ها و سرویس‌ها ازش برای تبادل داده استفاده می‌کنن. در نتیجه، کار با فایل‌های JSON می‌تونه یکپارچه‌سازی بخش‌های مختلف یه سیستم یا اشتراک‌گذاری داده‌ها بین برنامه‌ها رو خیلی راحت‌تر کنه.
  • اعتبارسنجی آسون: فایل‌های JSON به راحتی در برابر یه ساختار مشخص اعتبارسنجی می‌شن تا مطمئن بشیم که با قوانین تعیین‌شده همخونی دارن. این کار کمک می‌کنه خطاها و ناهماهنگی‌های داده‌ها زودتر پیدا بشه و تو زمان صرفه‌جویی کنیم. از قالب‌های JSON حتی می‌شه برای تولید خودکار مستندات هم استفاده کرد.

معایب کار با فایل JSON:

  1. پشتیبانی محدود از ساختارهای داده‌ی پیچیده: با اینکه JSON از انواع مختلفی از داده‌ها پشتیبانی می‌کنه، اما برای ذخیره ساختارهای پیچیده‌ای مثل گراف‌ها یا درخت‌ها خیلی مناسب نیست. این موضوع می‌تونه کار با بعضی داده‌های خاص رو سخت کنه.
  2. عدم اجبار ساختار: فایل‌های JSON ذاتاً هیچ ساختار مشخصی رو به داده‌ها تحمیل نمی‌کنن، به این معنی که می‌تونی داده‌های ناسازگار یا نامعتبر رو هم در یه فایل JSON ذخیره کنی. این مسئله می‌تونه باعث بروز خطا و باگ در برنامه‌هایی بشه که به این داده‌ها وابسته‌ان.
  3. قابلیت‌های محدود برای کوئری و اندیس‌گذاری: فایل‌های JSON همون سطح از قابلیت‌های کوئری‌زدن و جستجویی رو که دیتابیس‌های سنتی ارائه می‌دن، ندارن. این یعنی انجام کوئری‌های پیچیده یا پیدا کردن بخش‌های خاصی از داده از داخل یه فایل بزرگ JSON می‌تونه سخت و زمان‌بر باشه.

بهترین جایگزین‌های JSON برای تبادل موثر داده‌ها


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

  • فرمت XML یا همون Extensible Markup Language: فرمت XML یه زبان نشانه‌گذاریه که از تگ‌ها برای تعریف عناصر و از صفت‌ها (attributes) برای توصیف داده‌ها استفاده می‌کنه. این فرمت نسبت به JSON طولانی‌تر و پرحجم‌تره، اما از اعتبارسنجی ساختار و پیچیدگی‌های سند خیلی قوی‌تر پشتیبانی می‌کنه.
  • فرمت YAML یا همون Yet Another Markup Language: فرمت YAML یه فرمت سریالایز کردن داده‌ست که کاملاً برای انسان خواناست و طوری طراحی شده که خوندن و نوشتنش راحت باشه. این فرمت نسبت به XML خلاصه‌تره و از انواع داده‌های پیچیده و کامنت‌ها هم پشتیبانی می‌کنه.
  • فرمت MessagePack: این فرمت یه نوع سریالایز باینریه که طوری طراحی شده تا فشرده‌تر و کارآمدتر از JSON باشه. MessagePack از داده‌های پیچیده پشتیبانی می‌کنه و برای انتقال داده در شبکه‌هایی که پهنای باند کمی دارن عالیه.
  • فرمت Protocol Buffers: این یه فرمت سریالایز باینریه که توسط گوگل توسعه داده شده. فوق‌العاده کارآمده و پشتیبانی قوی‌ای از اعتبارسنجی ساختار داره، که اون رو برای سیستم‌های توزیع‌شده تو مقیاس بزرگ به یه انتخاب ایده‌آل تبدیل می‌کنه.
  • فرمت BSON یا Binary JSON: فرمت BSON در واقع یه نسخه سریالایزشده‌ی باینری از JSON هست که قابلیت‌های اون رو با پشتیبانی از انواع داده‌های بیشتر و بهینه‌سازی عملکرد ارتقا داده. این فرمت مخصوصاً برای ذخیره و انتقال کارآمد داده‌ها در پایگاه‌های داده مثل MongoDB طراحی شده.

اینکه چه فرمتی رو برای تبادل داده انتخاب کنی، کاملاً به نوع پروژه و نیازهای برنامه‌ت بستگی داره. JSON به خاطر سادگی، انعطاف‌پذیری و پشتیبانی همه‌جانبه‌ش هنوز هم یکی از محبوب‌ترین گزینه‌هاست، اما خب فرمت‌های دیگه‌ای مثل XML، YAML، MessagePack، Protocol Buffers و BSON ممکنه برای یه سری شرایط خاص مناسب‌تر باشن.

کتابخونه‌های پایتون برای کار با داده‌های JSON

چند تا پکیج محبوب در پایتون وجود داره که می‌تونی برای کار با فایل‌های JSON ازشون استفاده کنی:

  • کتابخونه json: این یه پکیج داخلی در پایتونه که متدهایی رو برای کُدگذاری (encoding) و کُدگشایی (decoding) داده‌های JSON در اختیارت می‌ذاره.
  • کتابخونه simplejson: این پکیج یه کدگذار و کدگشای سریع برای JSON هست که از انواع داده‌های خاص پایتون هم پشتیبانی می‌کنه.
  • کتابخونه ujson: این پکیج برای سریالایز و دیسریالایز کردن JSON تو پایتون طراحی شده و سرعت فوق‌العاده بالایی داره.
  • کتابخونه jsonschema: از این پکیج می‌تونی برای اعتبارسنجی داده‌های JSON بر اساس یه قالب مشخص استفاده کنی.

سریالایز و دیسریالایز کردن JSON

سریالایز (serialization) و دیسریالایز کردن (deserialization) JSON به فرآیندهایی می‌گن که توش داده‌های JSON به فرمت‌های دیگه (مثل اشیاء پایتون یا رشته‌های متنی) تبدیل می‌شن و برعکس، تا بشه اون‌ها رو راحت ذخیره یا منتقل کرد.

سریالایز کردن، فرآیند تبدیل یه شیء یا ساختار داده به یه رشته با فرمت JSON هست. این کار برای انتقال یا ذخیره داده‌ها به شکلی که سیستم‌ها یا برنامه‌های دیگه بتونن اون رو بخونن، ضروریه. سریالایز کردن JSON یه تکنیک خیلی رایج تو توسعه وب به حساب میاد، جایی که داده‌ها مدام دارن بین سیستم‌ها یا برنامه‌های مختلف جابه‌جا می‌شن.

از اون طرف، دیسریالایز کردن یعنی تبدیل یه رشته JSON به یه شیء یا ساختار داده. این فرآیند زمانی نیازه که بخوایم از اون داده‌ها داخل یه برنامه یا سیستم استفاده کنیم. تو توسعه وب، دیسریالایز کردن JSON معمولاً برای پردازش و خوندن داده‌هایی که از یه API یا منابع دیگه دریافت شدن، استفاده می‌شه.

سریالایز و دیسریالایز کردن تکنیک‌های مهمی برای کار با داده‌های JSON هستن و تو زمینه‌های مختلفی از جمله توسعه وب و تحلیل داده کاربرد دارن. خیلی از زبان‌های برنامه‌نویسی کتابخونه‌ها یا پکیج‌های داخلی دارن که این کار رو آسون و سریع می‌کنن.

در ادامه چند تا از توابع رایج کتابخونه json رو که برای سریالایز و دیسریالایز کردن استفاده می‌شن، با هم بررسی می‌کنیم.

۱. تابع ()json.dumps

از این تابع برای سریالایز کردن یه شیء پایتون به یه رشته JSON استفاده می‌شه. تابع dumps() یه آرگومان (همون شیء پایتون) می‌گیره و یه رشته JSON برمی‌گردونه. اینم یه مثال:

۲. تابع ()json.loads

این تابع برای تجزیه کردن یه رشته JSON به یه شیء پایتون استفاده می‌شه. تابع loads() یه آرگومان (رشته JSON) رو می‌گیره و یه شیء پایتون تحویلت می‌ده. اینم یه مثال:

۳. تابع ()json.dump

این تابع برای سریالایز کردن یه شیء پایتون و نوشتن مستقیم اون داخل یه فایل JSON استفاده می‌شه. تابع dump() دو تا آرگومان می‌گیره: یکی شیء پایتون و دومی فایل یه شیء که قراره داده توش نوشته بشه. اینم یه مثال:

۴. تابع ()json.load

از این تابع برای خوندن یه فایل JSON و تبدیل مستقیم محتوای اون به یه شیء پایتون استفاده می‌شه. تابع load() یه آرگومان (فایل شیء) می‌گیره و یه شیء پایتون برمی‌گردونه. اینم یه مثال:

پایتون و JSON انواع داده‌های مختلفی دارن و پایتون کلاً طیف وسیع‌تری از داده‌ها رو نسبت به JSON پشتیبانی می‌کنه. در حالی که پایتون می‌تونه ساختارهای داده پیچیده‌ای مثل مجموعه‌ها (sets) و دیکشنری‌ها رو ذخیره کنه، JSON فقط به مدیریت رشته‌ها، اعداد، مقادیر بولین، آرایه‌ها و اشیاء محدوده. بیا بعضی از این تفاوت‌ها رو با هم مقایسه کنیم:

پایتون

فرمت JSON

dict

Object

list

Array

tuple

Array

str

String

int

Number

float

Number

True

true

False

false

None

null

 

تبدیل لیست پایتون به JSON

برای تبدیل یه لیست پایتون به فرمت JSON، می‌تونی خیلی راحت از متد json.dumps() در کتابخونه json استفاده کنی.

تو این مثال، لیستی به اسم my_list داریم که ترکیبی از اعداد و رشته‌هاست. از متد json.dumps() استفاده کردیم تا این لیست رو به یه رشته با فرمت JSON تبدیل کنیم و نتیجه رو هم تو متغیر json_string ذخیره کردیم.

قالب‌بندی داده‌های JSON

در پایتون، تابع json.dumps() یه سری گزینه‌ها برای قالب‌بندی و مرتب کردن خروجی JSON در اختیارت می‌ذاره. اینجا چند تا از رایج‌ترین‌هاش رو می‌بینیم:

۱. فاصله‌گذاری (Indent)

این گزینه مشخص می‌کنه که برای تو‌رفتگی‌ها تو رشته JSON خروجی، باید از چند تا فاصله استفاده بشه. برای مثال:

۲. مرتب‌سازی کلیدها

این گزینه مشخص می‌کنه که آیا کلیدها در رشته JSON خروجی باید به ترتیب حروف الفبا مرتب بشن یا نه. مثلاً:

۳. جداکننده‌ها (Separators)

این گزینه بهت اجازه می‌ده که جداکننده‌های استفاده‌شده تو رشته JSON خروجی رو شخصی‌سازی کنی. پارامتر separators یه تاپل شامل دو تا رشته می‌گیره؛ اولی برای جدا کردن جفت‌های کلید-مقدار و دومی برای جدا کردن آیتم‌های داخل آرایه‌ها استفاده می‌شه. مثلاً:

یه مثال از کار با داده‌های JSON تو APIهای پایتون

خروجی
[
  {
    "userId": 1,
    "id": 1,
    "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
    "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
  },
  {
    "userId": 1,
    "id": 2,
    "title": "qui est esse",
    "body": "est rerum tempore vitae\nsequi sint nihil reprehenderit dolor beatae ea dolores neque\nfugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis\nqui aperiam non debitis possimus qui neque nisi nulla"
  },
  {
    "userId": 1,
    "id": 3,
    "title": "ea molestias quasi exercitationem repellat qui ipsa sit aut",
    "body": "et iusto sed quo iure\nvoluptatem occaecati omnis eligendi aut ad\nvoluptatem doloribus vel accusantium quis pariatur\nmolestiae porro eius odio et labore et velit aut"
  },
  ...

این کد از کتابخونه‌های requests و json استفاده می‌کنه تا یه درخواست به آدرس "https://jsonplaceholder.typicode.com/posts" بفرسته و داده‌ها رو دریافت کنه. خط requests.get(url) درخواست رو ارسال می‌کنه و جواب رو تو متغیر response ذخیره می‌کنه.

خط if response.status_code == 200: بررسی می‌کنه که آیا کد پاسخ ۲۰۰ هست یا نه؛ که نشون‌دهنده موفقیت‌آمیز بودن درخواسته. اگه همه‌چی اوکی باشه، کد متن پاسخ رو با استفاده از متد json.loads() می‌خونه، اون رو به یه دیکشنری پایتون تبدیل می‌کنه و تو متغیر data ذخیره می‌کنه.

بهینه‌سازی عملکرد JSON در پایتون

وقتی داری با حجم زیادی از داده‌های JSON در پایتون کار می‌کنی، بهینه‌سازی عملکرد کدت خیلی مهمه تا خیالت راحت باشه که همه‌چی با بالاترین سرعت اجرا می‌شه. اینجا چند تا نکته برای بهینه‌سازی کار با JSON در پایتون آوردیم:

  • استفاده از کتابخونه‌های cjson یا ujson: این کتابخونه‌ها از کتابخونه استاندارد خود پایتون خیلی سریع‌ترن و می‌تونن سرعت سریالایز و دیسریالایز کردن رو به شکل محسوسی بالا ببرن.
  • جلوگیری از تبدیل‌های غیرضروری: تبدیل مداوم بین اشیاء پایتون و داده‌های JSON می‌تونه پردازش سنگینی داشته باشه. تا جای ممکن سعی کن مستقیماً با خود داده‌های JSON کار کنی و از تبدیل‌های الکی پرهیز کنی.
  • استفاده از مولدها (generators) برای داده‌های بزرگ: وقتی داری با فایل‌های حجیم JSON کار می‌کنی، استفاده از مولدها می‌تونه به کاهش مصرف حافظه و بهبود سرعت کمک زیادی بکنه.
  • کاهش سربار شبکه: موقع انتقال داده‌های JSON روی شبکه، هرچی حجم داده کمتر باشه سرعت انتقال بیشتره. می‌تونی از تکنیک‌های فشرده‌سازی مثل gzip استفاده کنی تا قبل از ارسال، حجم فایل رو کم کنی.
  • استفاده از cache (کش): اگه داری مدام به یه داده JSON تکراری دسترسی پیدا می‌کنی، کش کردن اون داده می‌تونه تعداد درخواست‌ها برای بارگذاری رو کم کنه و در نتیجه عملکرد برنامه‌ت رو بهتر کنه.
  • بهینه‌سازی ساختار داده: ساختار خود فایل JSON هم رو عملکردش تأثیر داره. استفاده از یه ساختار ساده و مسطح (Flat) معمولاً سرعت بهتری نسبت به یه ساختار پیچیده و تو در تو داره.

محدودیت‌های فرمت JSON

با اینکه JSON یه فرمت خیلی محبوب برای تبادل داده‌ست، اما یه سری محدودیت‌ها هم داره که باید موقع کار بهشون توجه کنی:

  • عدم پشتیبانی از بعضی انواع داده: فرمت JSON از یه سری داده‌های خاص مثل داده‌های باینری، تاریخ و زمان به صورت مستقیم پشتیبانی نمی‌کنه. با اینکه راهکارهایی برای نشون دادن این مقادیر در JSON وجود داره، اما این موضوع می‌تونه سریالایز و دیسریالایز کردن رو کمی پیچیده کنه.
  • عدم پشتیبانی از کامنت: برعکس فرمت‌هایی مثل YAML یا XML، فرمت JSON از کامنت‌گذاری پشتیبانی نمی‌کنه. این باعث می‌شه نتونی برای توضیح دادن داده‌ها یا مستندسازی، به راحتی تو خود فایل کامنت بذاری.
  • انعطاف‌پذیری کم برای توسعه: با وجود اینکه JSON با ویژگی‌هایی مثل $schema یا ویژگی‌های سفارشی از توسعه پشتیبانی می‌کنه، اما انعطاف‌پذیریش در این زمینه به پای فرمت‌هایی مثل XML یا YAML نمی‌رسه.
  • نبود استاندارد برای حفظ ترتیب کلیدها: در JSON هیچ قانونی برای حفظ ترتیب کلیدهای داخل یه شیء وجود نداره؛ که همین مسئله ممکنه مقایسه یا ادغام فایل‌های JSON رو یه مقدار سخت کنه.
  • پشتیبانی محدود از ارجاعات چرخشی (Circular References): فرمت JSON از ارجاعات چرخشی (حالتی که یه شیء به خودش ارجاع می‌ده) خیلی خوب پشتیبانی نمی‌کنه. به همین دلیل، نمایش بعضی از ساختارهای پیچیده داده در JSON مشکل‌ساز می‌شه.

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

نتیجه‌گیری

فرمت JSON یه فرمت همه‌کاره و پرکاربرد برای تبادل داده تو دنیای توسعه وبه و پایتون هم ابزارهای خیلی قدرتمندی برای کار باهاش در اختیارت می‌ذاره. چه در حال ساخت یه API باشی و چه روی یه برنامه‌ سمت کاربر (کلاینت) کار کنی، درک اصول کار با JSON در پایتون برای هر توسعه‌دهنده‌ای از نون شب واجب‌تره. با یاد گرفتن تکنیک‌هایی که در این آموزش بررسی کردیم، حالا مسیر درستی رو برای کار با داده‌های JSON تو پایتون در پیش داری و می‌تونی برنامه‌هایی قوی‌تر و مقیاس‌پذیرتر بسازی.

اگه دوست داری یاد بگیری چطور پایپ‌لاین‌هایی بسازی که بتونی داده‌ها رو از فرمت‌های مختلف استخراج کنی، دوره بارگیری بهینه داده‌ها با Pandas در فینکا رو بهت پیشنهاد می‌کنیم. تو این دوره، با استفاده از pandas که یکی از مهم‌ترین کتابخونه‌های پایتون برای تحلیل داده‌ست، یاد می‌گیری چطور داده‌ها رو از منابعی مثل فرم‌های نظرسنجی، دیتابیس‌ها و APIها استخراج و وارد برنامه‌ت کنی.

اشتراک‌گذاری
فهرست مطالب
  • فرمت JSON چیه؟
  • مزایا و معایب استفاده از JSON
  • بهترین جایگزین‌های JSON برای تبادل موثر داده‌ها
  • کتابخونه‌های پایتون برای کار با داده‌های JSON
  • سریالایز و دیسریالایز کردن JSON
  • تبدیل لیست پایتون به JSON
  • قالب‌بندی داده‌های JSON
  • یه مثال از کار با داده‌های JSON تو APIهای پایتون
  • بهینه‌سازی عملکرد JSON در پایتون
  • محدودیت‌های فرمت JSON
  • نتیجه‌گیری

سوالات متداول

برای کار با فایل‌های بزرگ JSON که در حافظه جا نمی‌شن، می‌تونی داده‌ها رو مرحله‌به‌مرحله با استفاده از کتابخونه ijson پایتون پردازش کنی. یه راه دیگه هم اینه که اگه فایلت از یه سری شیء کوچیک‌تر تشکیل شده، اون رو خط‌به‌خط بخونی. مثلاً:

import ijson

with open('large_file.json', 'r') as file:
    for item in ijson.items(file, 'item'):
        print(item)  # Process each JSON item individually

برای ادغام دو تا شیء JSON، می‌تونی اول اون‌ها رو به دیکشنری‌های پایتون تبدیل (دیسریالایز) کنی و بعدش یه دیکشنری رو با اطلاعات دیکشنری دوم آپدیت کنی:

import json

json1 = '{"name": "Alice", "age": 25}'
json2 = '{"city": "New York", "hobbies": ["reading", "cycling"]}'

dict1 = json.loads(json1)
dict2 = json.loads(json2)

dict1.update(dict2)
merged_json = json.dumps(dict1)

print(merged_json)
# Output: {"name": "Alice", "age": 25, "city": "New York", "hobbies": ["reading", "cycling"]}

فرمت JSON به‌صورت پیش‌فرض از کامنت پشتیبانی نمی‌کنه، اما اگه داری با یه فایل JSON غیراستاندارد کار می‌کنی که توش کامنت داره (مثلاً با // یا /* */)، می‌تونی فایل رو پیش‌پردازش کنی تا قبل از تجزیه شدن، کامنت‌هاش حذف بشن. اینم یه مثال:

import json
import re

with open('file_with_comments.json', 'r') as file:
    content = file.read()

# Remove comments
content = re.sub(r'//.*?$|/\*.*?\*/', '', content, flags=re.DOTALL | re.MULTILINE)

data = json.loads(content)
print(data)

دریافت اپلیکیشن فینکا

با اپلیکیشن فینکا، به بیشتر دوره‌ها و مسیرها روی موبایل دسترسی دارید، تمرین می‌کنید و یادگیری رو هم‌زمان روی موبایل و دسکتاپ ادامه می‌دید.