python, آموزش قدم به قدم پایتون, پایتون

کار با فایل json در پایتون

کار با فایل json در پایتون

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

مفهوم فایل‌ 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}")

نوشته های مشابه

دیدگاهتان را بنویسید

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