نوشتن فایل JSON در پایتون – مبانی پایتون
فرمت JSON (JavaScript Object Notation) یک فرمت سبک و متداول برای تبادل دادهها است. این فرمت به دلیل سادگی و خوانایی بالا، به طور گسترده در برنامهنویسی وب، APIها و ذخیرهسازی دادهها استفاده میشود. پایتون به طور پیشفرض از طریق ماژول json امکان کار با دادههای JSON را فراهم میکند. در این مقاله، به بررسی نحوه نوشتن فایلهای JSON در پایتون خواهیم پرداخت.
ماژول json در پایتون
ماژول json در پایتون، توابعی را برای تبدیل دادههای پایتون به فرمت JSON و بالعکس ارائه میدهد. دو تابع اصلی در این ماژول برای نوشتن فایلهای JSON عبارتند از json.dump() و json.dumps(). تفاوت اصلی بین این دو تابع در این است که json.dump() دادهها را مستقیماً در یک فایل مینویسد، در حالی که json.dumps() دادهها را به صورت یک رشته JSON برمیگرداند.
تابع json.dump()
تابع json.dump() برای نوشتن دادههای پایتون در یک فایل JSON استفاده میشود. این تابع دو آرگومان اصلی میگیرد:
obj: شیء پایتونی که میخواهید به JSON تبدیل و در فایل نوشته شود.fp: شیء فایل که میخواهید دادههای JSON در آن نوشته شوند.
علاوه بر این، آرگومانهای اختیاری دیگری نیز وجود دارند که میتوانند برای کنترل نحوه نوشتن دادهها استفاده شوند:
indent: تعداد فضاهای خالی برای تورفتگی در فایل JSON. این آرگومان باعث میشود فایل JSON خواناتر شود.sort_keys: یک مقدار بولی که مشخص میکند آیا کلیدهای دیکشنری باید به ترتیب حروف الفبا مرتب شوند یا خیر.ensure_ascii: یک مقدار بولی که مشخص میکند آیا کاراکترهای غیر ASCII باید به صورت escape sequence نمایش داده شوند یا خیر.
مثال: نوشتن یک دیکشنری در یک فایل JSON
import json
data = {
"name": "علی",
"age": 30,
"city": "تهران",
"skills": ["پایتون", "جاوااسکریپت", "HTML"]
}
with open("data.json", "w", encoding="utf-8") as f:
json.dump(data, f, indent=4, ensure_ascii=False)
در این مثال، یک دیکشنری به نام data تعریف شده است که شامل اطلاعاتی درباره یک شخص است. سپس، با استفاده از تابع open() یک فایل به نام data.json در حالت نوشتن ("w") باز میشود. آرگومان encoding="utf-8" برای اطمینان از اینکه کاراکترهای فارسی به درستی ذخیره میشوند، استفاده شده است. در نهایت، تابع json.dump() دادههای دیکشنری را در فایل JSON مینویسد. آرگومان indent=4 باعث میشود فایل JSON با چهار فضای خالی تورفتگی داشته باشد و آرگومان ensure_ascii=False باعث میشود کاراکترهای فارسی به صورت مستقیم در فایل ذخیره شوند.
تابع json.dumps()
تابع json.dumps() برای تبدیل دادههای پایتون به یک رشته JSON استفاده میشود. این تابع یک آرگومان اصلی میگیرد:
obj: شیء پایتونی که میخواهید به JSON تبدیل کنید.
مانند تابع json.dump()، آرگومانهای اختیاری دیگری نیز وجود دارند که میتوانند برای کنترل نحوه تبدیل دادهها استفاده شوند. این آرگومانها شامل indent، sort_keys و ensure_ascii هستند.
مثال: تبدیل یک لیست به یک رشته JSON
import json
data = [
{"name": "علی", "age": 30},
{"name": "رضا", "age": 25},
{"name": "مریم", "age": 28}
]
json_string = json.dumps(data, indent=4, ensure_ascii=False)
print(json_string)
در این مثال، یک لیست به نام data تعریف شده است که شامل اطلاعاتی درباره چند شخص است. سپس، با استفاده از تابع json.dumps() دادههای لیست به یک رشته JSON تبدیل میشوند. آرگومان indent=4 باعث میشود رشته JSON با چهار فضای خالی تورفتگی داشته باشد و آرگومان ensure_ascii=False باعث میشود کاراکترهای فارسی به صورت مستقیم در رشته ذخیره شوند. در نهایت، رشته JSON چاپ میشود.
انواع دادههای پایتون و معادلهای JSON آنها
برخی از انواع دادههای پایتون و معادلهای آنها در JSON به شرح زیر است:
dict(دیکشنری) →object(شیء)list(لیست) →array(آرایه)str(رشته) →string(رشته)int(عدد صحیح) →number(عدد)float(عدد اعشاری) →number(عدد)bool(بولین) →boolean(بولین)None→null
نکات مهم در نوشتن فایلهای JSON
- همیشه فایل JSON را با استفاده از encoding مناسب (مانند UTF-8) باز کنید تا از بروز مشکل در نمایش کاراکترهای غیر ASCII جلوگیری شود.
- از آرگومان
indentبرای افزایش خوانایی فایل JSON استفاده کنید. - در صورت نیاز، از آرگومان
sort_keysبرای مرتبسازی کلیدهای دیکشنری استفاده کنید. - در صورت نیاز، از آرگومان
ensure_asciiبرای کنترل نحوه نمایش کاراکترهای غیر ASCII استفاده کنید. - هنگام نوشتن دادههای پیچیده در فایل JSON، از ساختارهای دادهای مناسب (مانند دیکشنری و لیست) استفاده کنید.
- قبل از نوشتن دادهها در فایل JSON، مطمئن شوید که دادهها معتبر هستند و با فرمت JSON سازگار هستند.
مدیریت خطاها
هنگام کار با فایلها، همیشه احتمال بروز خطا وجود دارد. برای مثال، ممکن است فایل مورد نظر برای نوشتن وجود نداشته باشد یا دسترسی به آن امکانپذیر نباشد. برای مدیریت این خطاها، میتوانید از بلوکهای try...except استفاده کنید.
مثال: مدیریت خطای FileNotFoundError
import json
data = {"name": "علی", "age": 30}
try:
with open("nonexistent_file.json", "w", encoding="utf-8") as f:
json.dump(data, f, indent=4)
except FileNotFoundError:
print("فایل مورد نظر یافت نشد.")
except Exception as e:
print(f"خطای دیگری رخ داد: {e}")
در این مثال، سعی میشود دادهها در یک فایل غیر موجود به نام nonexistent_file.json نوشته شوند. اگر فایل وجود نداشته باشد، خطای FileNotFoundError رخ میدهد و پیام مناسب چاپ میشود. اگر خطای دیگری رخ دهد، پیام خطای عمومی چاپ میشود.
نتیجهگیری
در این مقاله، به بررسی نحوه نوشتن فایلهای JSON در پایتون پرداختیم. ماژول json در پایتون ابزارهای قدرتمندی را برای کار با دادههای JSON فراهم میکند. با استفاده از توابع json.dump() و json.dumps() و آرگومانهای اختیاری آنها، میتوانید دادههای پایتون را به راحتی به فرمت JSON تبدیل و در فایلها ذخیره کنید. همچنین، با مدیریت خطاها میتوانید از بروز مشکلات احتمالی در هنگام کار با فایلها جلوگیری کنید.

بدون دیدگاه