فرمت JSON یکی از فرمتهای متداول برای ذخیره و تبادل دادهها در برنامهنویسی است. این فرمت به عنوان یکی از معیارهای اصلی برای انتقال دادهها در وب و دیگر برنامهها شناخته میشود. در این مقاله، ما کار با فایل JSON در پایتون را یاد خواهیم گرفت. از خواندن و نوشتن دادهها تا پردازش آنها، تمام جنبههای مربوط به فایلهای JSON را پوشش خواهیم داد. همچنین پیشنهاد میکنیم از دیگر مطالب سایت نیز دیدن نمایید:
- لیست و نحوه کار با آن
- دیکشنری در پایتون
- Tuple در پایتون
- if در پایتون
- حلقه for
- حلقه while
- تابع در پایتون
- تبدیل نوع داده
مفهوم فایل JSON
JSON مخفف عبارت “JavaScript Object Notation” است. این فرمت به عنوان یک روش ساده و مؤثر برای نمایش و تبادل دادهها بین برنامههای مختلف شناخته میشود. JSON در اساس یک متن است که اطلاعات را به صورت ساختارمند و شکیلتری نمایش میدهد. در فرمت JSON، دادهها به صورت جفتی از کلید و مقدار (key-value) ذخیره میشوند و میتوانند مقادیر متغیری مانند اعداد، رشتهها، بولینها، آرایهها و دیگر اشیاء JSON باشند.
یک مثال از یک ساختار JSON نمایش میدهیم:
{
"نام": "علی",
"سن": 30,
"شغل": "مهندس",
"مهارتها": ["Python", "JavaScript", "SQL"],
"استاد": false
}
در این مثال، ما یک شیء JSON داریم که شامل نام، سن، شغل، مهارتها (که یک آرایه از رشتهها است) و وضعیت استاد (یک مقدار boolean) است.
کار با فایل json در پایتون
برای خواندن یک فایل JSON در پایتون، ابتدا باید محتوای فایل را بخوانیم و سپس آن را به یک ساختار دادهای در پایتون تبدیل کنیم. برای این کار، از کتابخانه json
استفاده میکنیم.
خواندن با استفاده از json.load
اگر فایل JSON شما یک شیء JSON (object) باشد، میتوانید از تابع json.load()
برای خواندن آن استفاده کنید.
فرض کنید که یک فایل به نام data.json
داریم که حاوی یک شیء JSON است:
{
"نام": "علی",
"سن": 30,
"شغل": "مهندس"
}
حالا میتوانیم از کد زیر برای خواندن این فایل استفاده کنیم:
import json
# باز کردن فایل JSON برای خواندن
with open('data.json', 'r', encoding='utf-8') as file:
data = json.load(file)
# نمایش دادههای خوانده شده
print(data)
خروجی این کد به صورت زیر خواهد بود:
{'نام': 'علی', 'سن': 30, 'شغل': 'مهندس'}
خواندن با استفاده از json.loads
اگر داده JSON شما در یک رشته قرار دارد، میتوانید از تابع json.loads()
برای تجزیه و تحلیل رشته و تبدیل آن به یک شیء در پایتون استفاده کنید.
import json
# یک رشته JSON
json_str = '{"نام": "علی", "سن": 30, "شغل": "مهندس"}'
# تجزیه و تحلیل رشته JSON و تبدیل به شیء پایتون
data = json.loads(json_str)
# نمایش دادههای تجزیه و تحلیل شده
print(data)
خروجی این کد نیز به صورت زیر خواهد بود:
{'نام': 'علی', 'سن': 30, 'شغل': 'مهندس'}
نوشتن فایل JSON در پایتون
برای نوشتن دادهها در یک فایل JSON در پایتون، میتوانید از کتابخانه json
استفاده کنید. ابتدا دادههای خود را به شکل یک شیء پایتون تبدیل کرده و سپس آن را در فایل JSON مینویسید.
نوشتن با استفاده از json.dump
برای نوشتن یک شیء پایتون به یک فایل JSON، از تابع json.dump()
استفاده میکنیم.
import json
# شیء پایتون
data = {
"نام": "علی",
"سن": 30,
"شغل": "مهندس"
}
# نوشتن داده به فایل JSON
with open('output.json', 'w', encoding='utf-8') as file:
json.dump(data, file, ensure_ascii=False, indent=4)
در این کد، ما یک شیء پایتون به نام data
داریم و از تابع json.dump()
برای نوشتن آن به فایل output.json
استفاده میکنیم. پارامتر ensure_ascii=False
برای پشتیبانی از کاراکترهای غیر ASCII در فایل JSON و پارامتر indent=4
برای تنظیم فرمت و قرار دادن فاصله در شکل نهایی فایل JSON استفاده گردیده است.
نوشتن با استفاده از json.dumps
اگر میخواهید یک رشته JSON ایجاد کنید بدون نوشتن آن به یک فایل، از تابع json.dumps()
استفاده میکنید.
import json
# شیء پایتون
data = {
"نام": "علی",
"سن": 30,
"شغل": "مهندس"
}
# تولید رشته JSON
json_str = json.dumps(data, ensure_ascii=False, indent=4)
# نمایش رشته JSON
print(json_str)
خروجی این کد به صورت زیر خواهد بود:
{
"نام": "علی",
"سن": 30,
"شغل": "مهندس"
}
پردازش دادههای JSON
یکی از مزایای اصلی استفاده از فرمت JSON این است که اطلاعات به صورت ساختار مند و قابل درک در پایتون قرار دارند. این بدین معناست که میتوانید به آسانی به دادهها دسترسی پیدا کرده و آنها را پردازش کنید.
دسترسی به مقادیر در یک شیء JSON
برای دسترسی به مقادیر در یک شیء JSON، شما میتوانید به شکل یک دیکشنری در پایتون به آنها دسترسی پیدا کنید. به عنوان مثال:
import json
# شیء پایتون
data = {
"نام": "علی",
"سن": 30,
"شغل": "مهندس"
}
# دسترسی به مقدار سن
age = data["سن"]
print(f"سن: {age}")
پردازش آرایهها در یک شیء JSON
در JSON، میتوانید آرایههایی از مقادیر داشته باشید. برای دسترسی به مقادیر در یک آرایه JSON، میتوانید از اندیسها استفاده کنید. به عنوان مثال:
import json
# شیء پایتون
data = {
"نام": "علی",
"مهارتها": ["Python", "JavaScript", "SQL"]
}
# دسترسی به مقادیر در آرایه مهارتها
skills = data["مهارتها"]
# چاپ مهارتها به صورت جداگانه
for skill in skills:
print(f"مهارت: {skill}")
تغییر دادهها در یک شیء JSON
برای تغییر مقادیر در یک شیء JSON، میتوانید به آنها دسترسی پیدا کرده و مقادیر را به صورت مستقیم تغییر دهید. به عنوان مثال:
import json
# شیء پایتون
data = {
"نام": "علی",
"سن": 30,
"شغل": "مهندس"
}
# تغییر مقدار سن
data["سن"] = 31
# نمایش دادههای تغییر یافته
print(data)
خروجی این کد به صورت زیر خواهد بود:
{'نام': 'علی', 'سن': 31, 'شغل': 'مهندس'}
افزودن اطلاعات به یک آرایه JSON
برای افزودن داده به یک آرایه JSON، میتوانید از عملگر append()
استفاده کنید. به عنوان مثال:
import json
# شیء پایتون
data = {
"نام": "علی",
"مهارتها": ["Python", "JavaScript", "SQL"]
}
# افزودن مهارت جدید به آرایه مهارتها
new_skill = "React"
data["مهارتها"].append(new_skill)
# نمایش دادههای تغییر یافته
print(data)
خروجی این کد به صورت زیر خواهد بود:
{'نام': 'علی', 'مهارتها': ['Python', 'JavaScript', 'SQL', 'React']}
پردازش دادههای JSON پیچیدهتر
در موارد پیچیدهتر، دادههای JSON ممکن است شامل شیءهای متعدد و آرایههای تو در تو باشند. برای دسترسی به مقادیر در این ساختارها، ممکن است نیاز به توالیای از دسترسیها باشد.
دسترسی به مقادیر در یک شیء JSON داخل یک شیء JSON
در صورتی که دادههای JSON داخل یکدیگر باشند، میتوانید به شکل زنجیرهای به آنها دسترسی پیدا کنید. به عنوان مثال:
import json
# شیء پایتون با ساختار پیچیدهتر
data = {
"نام": "علی",
"اطلاعات_تکمیلی": {
"سن": 30,
"شغل": "مهندس"
}
}
# دسترسی به مقدار سن
age = data["اطلاعات_تکمیلی"]["سن"]
print(f"سن: {age}")
دسترسی به مقادیر در یک آرایه JSON داخل یک شیء JSON
اگر دادههای JSON شامل آرایههای داخلی باشند، میتوانید با استفاده از اندیسها و دسترسی زنجیرهای به مقادیر آنها دسترسی پیدا کنید. به عنوان مثال:
import json
# شیء پایتون با ساختار پیچیدهتر
data = {
"نام": "علی",
"مهارتها": [
"Python",
"JavaScript",
"SQL"
]
}
# دسترسی به مهارت دوم در آرایه مهارتها
second_skill = data["مهارتها"][1]
print(f"مهارت دوم: {second_skill}")
پیمایش دادههای JSON
یکی از عملیات مهم در کار با فایل json در پایتون پیمایش آنهاست. شما میتوانید از حلقهها برای پیمایش مقادیر در یک شیء JSON یا آرایه JSON استفاده کنید.
پیمایش دادههای در یک شیء JSON
برای پیمایش مقادیر در یک شیء JSON، میتوانید از حلقه for
بر روی کلیدهای شیء استفاده کنید. به عنوان مثال:
import json
# شیء پایتون
data = {
"نام": "علی",
"سن": 30,
"شغل": "مهندس"
}
# پیمایش کلیدها و مقادیر در شیء JSON
for key, value in data.items():
print(f"{key}: {value}")
پیمایش دادههای در یک آرایه JSON
برای پیمایش مقادیر در یک آرایه JSON، میتوانید از حلقه for
بر روی اندیسها یا مقادیر استفاده کنید. به عنوان مثال:
import json
# آرایه پایتون
data = {
"نام": "علی",
"مهارتها": [
"Python",
"JavaScript",
"SQL"
]
}
# پیمایش مهارتها با استفاده از اندیسها
for i in range(len(data["مهارتها"])):
skill = data["مهارتها"][i]
print(f"مهارت {i + 1}: {skill}")
یا میتوانید از حلقه for
مستقیماً بر روی مقادیر آرایه استفاده کنید:
import json
# آرایه پایتون
data = {
"نام": "علی",
"مهارتها": [
"Python",
"JavaScript",
"SQL"
]
}
# پیمایش مهارتها با استفاده از حلقه for
for skill in data["مهارتها"]:
print(f"مهارت: {skill}")