
روز ۴۴ آموزش پایتون: کار با JSON از API
یکی از رایجترین نیازهای برنامه نویسی مدرن در پایتون، دریافت دادهها از سرویسهای خارجی و پردازش آنهاست. فرمت JSON به دلیل سبک بودن، ساختارمند بودن و سازگاری با اکثر زبانهای برنامهنویسی، محبوبترین فرمت برای تبادل دادهها بین برنامهها و APIها به شمار میرود. زمانی که از یک API داده دریافت میکنیم، این دادهها اغلب در قالب JSON هستند و باید بتوانیم آنها را به شکل دیکشنری یا لیست در پایتون پردازش کنیم. تسلط بر پردازش JSON نه تنها در پروژههای کوچک بلکه در پروژههای بزرگ سازمانی نیز اهمیت فراوان دارد، زیرا دادههای پیچیده مانند اطلاعات کاربران، گزارشها، لیست محصولات و سایر منابع معمولاً به صورت ساختاریافته و تو در تو ارائه میشوند و مدیریت آنها بدون دانش JSON تقریباً غیرممکن است.
دریافت داده از API و تبدیل به JSON
برای دریافت داده از یک API، ابتدا نیاز به ارسال یک درخواست HTTP با استفاده از کتابخانه requests داریم. پس از دریافت پاسخ، با متد .json() میتوانیم دادهها را به دیکشنری پایتون تبدیل کنیم و به راحتی در پروژههای خود استفاده کنیم. این روش به ما اجازه میدهد دادهها را جستجو، فیلتر و حتی در فایلهای محلی ذخیره کنیم. نمونه کد زیر یک نمونه پایه برای دریافت اطلاعات کاربران از یک API و پردازش JSON آن است:
import requests
url = "https://jsonplaceholder.typicode.com/users"
response = requests.get(url)
if response.status_code == 200:
users = response.json()
for user in users:
print("Name:", user['name'])
print("Email:", user['email'])
print("City:", user['address']['city'])
print("------------------------")
else:
print("خطا در دریافت دادهها:", response.status_code)در این مثال، ابتدا URL API مشخص شده و سپس با requests.get درخواست ارسال میکنیم. دادهها به صورت JSON دریافت و با response.json() به دیکشنری پایتون تبدیل میشوند. سپس میتوانیم به راحتی مقادیر هر کاربر مانند نام، ایمیل و شهر را استخراج و نمایش دهیم.
پردازش JSONهای پیچیده و تو در تو
دادههای واقعی APIها اغلب شامل ساختارهای تو در تو هستند که پردازش آنها نیازمند دانش دسترسی به دیکشنریهای تو در تو و لیستهاست. با استفاده از حلقهها و دستورات شرطی، میتوانیم دادههای مورد نیاز را استخراج کرده و اطلاعات اضافی را نادیده بگیریم. به عنوان مثال، اگر بخواهیم فقط کاربران از یک شهر خاص را نمایش دهیم، میتوانیم از شرطها و حلقهها بهره ببریم:
city_name = "South Christy"
for user in users:
if user['address']['city'] == city_name:
print(user['name'], "-", user['email'])این روش بسیار کاربردی است و در پروژههای واقعی مانند فیلتر کردن گزارشها، نمایش دادههای خاص و ایجاد داشبوردهای ساده برای تحلیل دادهها استفاده میشود.
ذخیره و بازیابی دادههای JSON
یکی دیگر از کاربردهای مهم JSON، ذخیره دادهها در فایلهای محلی و بازیابی آنها در زمان مناسب است. این روش باعث میشود نیاز نباشد هر بار از API دادهها را دریافت کنیم و سرعت برنامه افزایش یابد. پایتون با ماژول json امکانات خواندن و نوشتن دادهها را به راحتی فراهم میکند. نمونه کد ذخیره و خواندن JSON:
import json
# ذخیره داده در فایل
with open("users.json", "w", encoding="utf-8") as f:
json.dump(users, f, ensure_ascii=False, indent=4)
# خواندن داده از فایل
with open("users.json", "r", encoding="utf-8") as f:
local_users = json.load(f)
for user in local_users:
print(user['name'], "-", user['email'])در این مثال، دادهها با فرمت JSON در فایل ذخیره شده و پس از آن از فایل بازیابی میشوند. استفاده از ensure_ascii=False و indent=4 باعث میشود فایل خواناتر و استاندارد باشد. این روش در پروژههای واقعی بسیار کاربردی است و پایهای برای مدیریت دادههای بزرگ و تجزیه و تحلیل آنها فراهم میکند.
مدیریت خطاها و استثناها در کار با API و JSON
همیشه احتمال خطا در دریافت دادهها از API یا پردازش JSON وجود دارد، از جمله خطاهای شبکه، پاسخ نامعتبر یا فرمت غیرمنتظره. استفاده از ساختار try-except باعث میشود برنامه مقاوم باشد و تجربه کاربری بهتری ارائه دهد. نمونه کد مدیریت خطا:
try:
response = requests.get(url, timeout=10)
response.raise_for_status()
data = response.json()
except requests.exceptions.RequestException as e:
print("خطای درخواست:", e)
except json.JSONDecodeError as e:
print("خطای پردازش JSON:", e)این روش تضمین میکند برنامه در صورت بروز مشکل متوقف نشده و پیام مناسب به کاربر نمایش داده شود. این نکته در پروژههای واقعی که با دادههای خارجی سروکار دارند بسیار حیاتی است.
جمعبندی روز ۴۴
در این جلسه یاد گرفتیم چگونه دادهها را از یک API دریافت کنیم، آنها را به JSON تبدیل کرده و در پایتون پردازش کنیم. همچنین نحوه کار با دادههای تو در تو، فیلتر کردن اطلاعات، ذخیره و بازیابی دادهها در فایلهای محلی و مدیریت خطاها بررسی شد. این مهارتها پایهای برای کار با دادههای واقعی و تعامل با سرویسهای آنلاین در پروژههای عملی هستند و باعث میشوند برنامههای ما قابل اعتماد، منعطف و کاربردی باشند. تسلط بر JSON و requests به توسعهدهنده این امکان را میدهد که دادههای خارجی را به شکل هوشمندانه و کارآمد مدیریت کند.
