فایل JSON چیست؟

فایل JSON (JavaScript Object Notation) فرمتی است که برای ذخیره و تبادل داده ها استفاده می شود. این ساختار به گونه ای است که خواندن و نوشتن را برای انسان و ماشین آسان می کند. در اینجا چند نکته کلیدی در مورد فایل های JSON وجود دارد:

ساختار داده: فایل‌های JSON داده‌ها را در جفت‌ها و آرایه‌های کلید-مقدار ذخیره می‌کنند. داده‌ها با استفاده از کروشه {} برای اشیا و براکت‌ [] برای آرایه‌ها سازماندهی می‌شوند.

خوانا برای انسان: قالب این فایل ها مبتنی بر متن است و طوری طراحی شده که به راحتی توسط انسان قابل خواندن باشد. به عنوان مثال:

{
  "name": "John",
  "age": 30,
  "isStudent": false,
  "courses": ["Math", "Science"]
}

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

کاربردهای رایج: JSON معمولاً در برنامه های کاربردی وب برای انتقال داده ها بین سرور و کلاینت استفاده می شود. همچنین در API ها، فایل های پیکربندی و ذخیره سازی داده ها استفاده می شود.

تبدیل فایل CSV به JSON

این برنامه پایتون داده ها را از یک فایل CSV می خواند و آن را به یک فایل JSON تبدیل می کند:

import csv
import json
import os

# Initialize an empty dictionary to store the data
my_dict = {}

# Get the current directory of the script
current_dir = os.path.dirname(os.path.abspath(__file__))

# Define the paths for the input CSV file and the output JSON file
csv_path = os.path.join(current_dir, 'input_file.csv')
json_path = os.path.join(current_dir, 'output_file.json')

# Open the CSV file for reading
with open(csv_path, encoding='utf-8') as csv_handler:
    # Create a CSV reader object
    csv_reader = csv.DictReader(csv_handler)
    
    # Iterate over each row in the CSV file
    for rows in csv_reader:
        # Use the value in 'column1' as the key for the dictionary
        key = rows['column1']
        # Add the row to the dictionary
        my_dict[key] = rows

# Open the JSON file for writing
with open(json_path, 'w', encoding='utf-8') as json_handler:
    # Write the dictionary to the JSON file with indentation for readability
    json_handler.write(json.dumps(my_dict, indent=4))

توضیح برنامه:

اولین قدم وارد کردن کتابخانه های مورد نیاز به برنامه است.

csv: این ماژول برای خواندن و نوشتن فایل های CSV (مقادیر جدا شده با کاما) استفاده می شود.

json: این ماژول برای خواندن داده‌های موجود در فایل های JSON (JavaScript Object Notation) و تبدیل اشیاء پایتون به فرمت JSON استفاده می‌شود.

os: این ماژول راهی برای استفاده از عملکردهای وابسته به سیستم عامل مانند خواندن یا نوشتن در سیستم فایل ارائه می دهد.

my_dict یک دیکشنری خالی است که داده های خوانده شده از فایل CSV را ذخیره می کند. هر جفت کلید-مقدار در این دیکشنری یک ردیف از فایل CSV را نشان می دهد.

فرض می کنیم که فایل csv ما در همان پوشه ای قرار دارد که برنامه پایتون را ذخیره کرده ایم و نام آن input_file.csv است.

current_dir متغیری است که مسیر پوشه را که اسکریپت در آن قرار دارد ذخیره می کند. os.path.abspath(file) مسیر مطلق اسکریپت را دریافت می کند و os.path.dirname() قسمت پوشه آن مسیر را استخراج می نماید.

csv_path: این متغیر مسیر کامل فایل CSV ورودی را با اضافه کردن “input_file.csv” به مسیر پوشه فعلی ذخیره می کند.

json_path: به طور مشابه، این متغیر مسیر کامل فایل JSON خروجی را ذخیره می کند. نام فایل خروجی ما output_file.json است.

حالا باید محتویات فایل csv را بخوانیم.

with open(csv_path, encoding='utf-8') as csv_handler:
    csv_reader = csv.DictReader(csv_handler)
    for rows in csv_reader:
        key = rows['column1']
        my_dict[key] = rows

with open(csv_path, encoding=‘utf-8’) as csv_handler: فایل CSV را در حالت خواندن با رمزگذاری UTF-8 باز می کند. عبارت with تضمین می کند که فایل پس از اتمام مجموعه به درستی بسته شود.

csv_reader = csv.DictReader(csv_handler): یک شی DictReader ایجاد می کند که فایل CSV را در قالب دیکشنری می خواند که در آن هر ردیف دیکشنری با کلیدهای مربوط به عنوان ستون های فایل CSV متناظر است.

for rows in csv_reader: کدهای داخل حلقه for روی هر ردیف در فایل CSV تکرار می شود.

key = rows[‘column1’]: مقدار را از ستون ‘column1’ ردیف فعلی استخراج می کند تا به عنوان کلید در دیکشنری استفاده شود.

my_dict[key] = rows: ردیف فعلی را با کلید استخراج شده در خط قبل به دیکشنری my_dict اضافه می کند.

حالا باید مقادیری را که از فایل CSV استخراج و در دیکشنری ذخیره کردیم در فایل JSON ذخیره کنیم.

with open(json_path, 'w', encoding='utf-8') as json_handler:
    json_file_handler.write(json.dumps(my_dict, indent=4))

with open(json_path, ‘w’, encoding=’utf-8’) as json_handler: فایل JSON را در حالت نوشتن با رمزگذاری UTF-8 باز می کند.

json_handler.write(json.dumps(my_dict, indent=4)): دیکشنری my_dict را به رشته ای با فرمت JSON با تورفتگی 4 اسپیس برای خوانایی بیشتر تبدیل می کند و آن را در فایل JSON می نویسد.

بعد از اجرای برنامه خواهید دید که در پوشه حاوی برنامه یک فایل JSON با نام output_file ایجاد شده است.