کار با JSON در پایتون چیست؟

JSON یکی از پرکاربردترین قالب‌ها برای ذخیره‌سازی و انتقال اطلاعات در برنامه‌نویسی است. در پایتون می‌توانیم با استفاده از ماژول json اطلاعات را به JSON تبدیل کنیم یا اطلاعات JSON را به داده‌های قابل استفاده در پایتون تبدیل کنیم.

در این آموزش با JSON، تفاوت آن با Dictionary و روش‌های خواندن، تبدیل و ذخیره اطلاعات JSON آشنا می‌شویم.

JSON چیست؟

JSON مخفف عبارت JavaScript Object Notation است. JSON یک قالب متنی ساده و قابل خواندن برای انسان و کامپیوتر است که برای انتقال و ذخیره اطلاعات استفاده می‌شود.

JSON در بسیاری از APIها، وب‌سایت‌ها و برنامه‌های کاربردی استفاده می‌شود. برای مثال، یک برنامه می‌تواند اطلاعات کاربران را به‌صورت JSON دریافت کند.

یک نمونه از داده JSON

{
    "name": "Ali",
    "age": 25,
    "is_student": false
}

تفاوت JSON و Dictionary در پایتون

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

در Dictionary پایتون، کلیدها معمولاً با کوتیشن تکی یا دوتایی نوشته می‌شوند، ولی در JSON استاندارد، کلیدها باید داخل کوتیشن دوتایی قرار بگیرند.

Dictionary در پایتون

user = {
    "name": "Ali",
    "age": 25,
    "is_student": False
}

print(user)

JSON

{
    "name": "Ali",
    "age": 25,
    "is_student": false
}

توجه کن که مقدار بولی در پایتون با True و False نوشته می‌شود، اما در JSON از true و false استفاده می‌کنیم.

وارد کردن ماژول json

برای کار با JSON در پایتون، ابتدا باید ماژول json را وارد کنیم. این ماژول به‌صورت پیش‌فرض همراه پایتون نصب می‌شود و نیازی به نصب جداگانه ندارد.

import json

تبدیل Dictionary به JSON با json.dumps()

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

مثال ساده

import json

user = {
    "name": "Ali",
    "age": 25,
    "city": "Tehran"
}

json_data = json.dumps(user)

print(json_data)

خروجی

{"name": "Ali", "age": 25, "city": "Tehran"}

در این مثال، Dictionary به یک رشته متنی JSON تبدیل شده است.

مرتب و خوانا کردن JSON با indent

برای اینکه خروجی JSON خواناتر باشد، می‌توانیم از پارامتر indent استفاده کنیم.

import json

user = {
    "name": "Ali",
    "age": 25,
    "city": "Tehran"
}

json_data = json.dumps(user, indent=4)

print(json_data)

خروجی

{
    "name": "Ali",
    "age": 25,
    "city": "Tehran"
}

مقدار indent=4 باعث می‌شود اطلاعات با فاصله‌گذاری مناسب نمایش داده شوند.

نمایش حروف فارسی در JSON

به‌صورت پیش‌فرض، پایتون ممکن است حروف غیرانگلیسی را در خروجی JSON به شکل Unicode نمایش دهد. برای نمایش صحیح حروف فارسی، می‌توانیم از پارامتر ensure_ascii=False استفاده کنیم.

import json

user = {
    "name": "علی",
    "city": "تهران"
}

json_data = json.dumps(
    user,
    ensure_ascii=False,
    indent=4
)

print(json_data)

خروجی

{
    "name": "علی",
    "city": "تهران"
}

تبدیل JSON به Dictionary با json.loads()

از متد json.loads() برای تبدیل یک رشته JSON به داده قابل استفاده در پایتون، مانند Dictionary، استفاده می‌کنیم.

import json

json_data = '{"name": "Ali", "age": 25}'

user = json.loads(json_data)

print(user)
print(user["name"])

خروجی

{'name': 'Ali', 'age': 25}
Ali

در این مثال، رشته JSON به Dictionary تبدیل شده است و سپس مقدار کلید name را دریافت کرده‌ایم.

ذخیره اطلاعات در فایل JSON با json.dump()

اگر بخواهیم اطلاعات را داخل یک فایل ذخیره کنیم، از متد json.dump() استفاده می‌کنیم.

import json

user = {
    "name": "Ali",
    "age": 25,
    "city": "Tehran"
}

with open("user.json", "w", encoding="utf-8") as file:

    json.dump(
        user,
        file,
        ensure_ascii=False,
        indent=4
    )

در این کد، فایل user.json ساخته می‌شود و اطلاعات Dictionary داخل آن ذخیره خواهد شد.

حالت "w" برای نوشتن اطلاعات در فایل استفاده می‌شود و encoding="utf-8" امکان ذخیره صحیح حروف فارسی را فراهم می‌کند.

خواندن اطلاعات از فایل JSON با json.load()

برای خواندن اطلاعات ذخیره‌شده در یک فایل JSON، از متد json.load() استفاده می‌کنیم.

import json

with open("user.json", "r", encoding="utf-8") as file:

    user = json.load(file)

print(user)
print(user["name"])

در این مثال، اطلاعات فایل JSON خوانده شده و در متغیر user قرار می‌گیرد.

مثال کاربردی: ذخیره اطلاعات چند کاربر

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

import json

users = [
    {
        "name": "Ali",
        "age": 25
    },
    {
        "name": "Sara",
        "age": 22
    },
    {
        "name": "Reza",
        "age": 30
    }
]

with open("users.json", "w", encoding="utf-8") as file:

    json.dump(
        users,
        file,
        ensure_ascii=False,
        indent=4
    )

print("اطلاعات کاربران ذخیره شد.")

محتوای فایل users.json

[
    {
        "name": "Ali",
        "age": 25
    },
    {
        "name": "Sara",
        "age": 22
    },
    {
        "name": "Reza",
        "age": 30
    }
]

تفاوت متدهای مهم JSON

متد کاربرد
json.dumps() تبدیل داده پایتون به رشته JSON
json.loads() تبدیل رشته JSON به داده پایتون
json.dump() ذخیره داده در فایل JSON
json.load() خواندن داده از فایل JSON

نکات مهم درباره JSON

جمع‌بندی آموزش JSON در پایتون

JSON یکی از قالب‌های مهم در دنیای برنامه‌نویسی و توسعه وب است. با استفاده از ماژول json در پایتون می‌توانیم داده‌ها را به JSON تبدیل کنیم، اطلاعات JSON را بخوانیم و داده‌ها را در فایل ذخیره کنیم.

یادگیری JSON برای کار با APIها، پروژه‌های هوش مصنوعی، ذخیره اطلاعات کاربران و توسعه برنامه‌های کاربردی بسیار مفید است.

سؤالات متداول درباره JSON

آیا برای استفاده از JSON باید آن را نصب کنیم؟

خیر. ماژول json به‌صورت پیش‌فرض در پایتون وجود دارد و نیازی به نصب جداگانه ندارد.

تفاوت dumps و dump چیست؟

متد dumps() داده را به رشته JSON تبدیل می‌کند، اما متد dump() داده را مستقیماً در یک فایل ذخیره می‌کند.

تفاوت loads و load چیست؟

متد loads() رشته JSON را می‌خواند، اما متد load() اطلاعات را از یک فایل JSON دریافت می‌کند.

آیا JSON در پروژه‌های هوش مصنوعی استفاده می‌شود؟

بله. JSON در بسیاری از APIها و سرویس‌های نرم‌افزاری استفاده می‌شود و برای ارسال و دریافت اطلاعات بین برنامه‌ها کاربرد دارد.

← درس قبلی: کار با فایل‌ها در پایتون بازگشت به آموزش پایتون درس بعدی: برنامه‌نویسی شیءگرا در پایتون →