چگونه فایل‌های JSON را در پایتون پردازش کنیم

خلاصه
1404/10/14

پردازش فایل‌های JSON در پایتون بسیار ساده است، زیرا پایتون کتابخانه‌ای داخلی به نام `json` دارد که کار با این فرمت را آسان می‌کند. در این راهنما، مراحل مختلف پردازش فایل‌های JS

چگونه فایل‌های JSON را در پایتون پردازش کنیم

پردازش فایل‌های JSON در پایتون بسیار ساده است، زیرا پایتون کتابخانه‌ای داخلی به نام `json` دارد که کار با این فرمت را آسان می‌کند. در این راهنما، مراحل مختلف پردازش فایل‌های JSON را توضیح می‌دهم.

---

### **۱. خواندن فایل JSON**
برای خواندن یک فایل JSON و تبدیل آن به یک شیء پایتون (مانند دیکشنری یا لیست)، از تابع `json.load()` استفاده می‌کنیم.

```python
import json

# خواندن فایل JSON
with open('data.json', 'r', encoding='utf-8') as file:
data = json.load(file)

print(data) # نمایش داده‌های خوانده شده
```

---

### **۲. نوشتن در فایل JSON**
برای ذخیره یک شیء پایتون (مانند دیکشنری یا لیست) در یک فایل JSON، از تابع `json.dump()` استفاده می‌کنیم.

```python
import json

data = {
"name": "Ali",
"age": 30,
"city": "Tehran"
}

# نوشتن در فایل JSON
with open('output.json', 'w', encoding='utf-8') as file:
json.dump(data, file, indent=4, ensure_ascii=False) # indent برای قشنگ‌سازی خروجی
```

- `indent=4`: برای قشنگ‌سازی خروجی (فاصله‌گذاری)
- `ensure_ascii=False`: برای حفظ کاراکترهای غیر ASCII (مانند حروف فارسی)

---

### **۳. تبدیل رشته JSON به شیء پایتون**
اگر یک رشته JSON دارید و می‌خواهید آن را به دیکشنری یا لیست تبدیل کنید، از `json.loads()` استفاده کنید.

```python
import json

json_string = '{"name": "Ali", "age": 30, "city": "Tehran"}'
data = json.loads(json_string)

print(data["name"]) # خروجی: Ali
```

---

### **۴. تبدیل شیء پایتون به رشته JSON**
برای تبدیل یک شیء پایتون به رشته JSON، از `json.dumps()` استفاده کنید.

```python
import json

data = {
"name": "Ali",
"age": 30,
"city": "Tehran"
}

json_string = json.dumps(data, indent=4, ensure_ascii=False)
print(json_string)
```

---

### **۵. کار با فایل‌های JSON بزرگ**
اگر با فایل‌های JSON بسیار بزرگ کار می‌کنید، می‌توانید از `ijson` استفاده کنید که برای پردازش جریان‌های JSON مناسب است.

```python
import ijson

with open('large_file.json', 'r', encoding='utf-8') as file:
for item in ijson.items(file, 'item'):
print(item) # پردازش هر آیتم به صورت جداگانه
```

---

### **۶. خطاهای رایج و مدیریت آن‌ها**
- **`json.JSONDecodeError`**: اگر فایل JSON معتبر نباشد، این خطا رخ می‌دهد.
- **`FileNotFoundError`**: اگر فایل وجود نداشته باشد.

```python
import json

try:
with open('data.json', 'r') as file:
data = json.load(file)
except FileNotFoundError:
print("فایل یافت نشد!")
except json.JSONDecodeError:
print("فایل JSON معتبر نیست!")
```

---

### **۷. مثال کامل**
```python
import json

# خواندن فایل JSON
with open('input.json', 'r', encoding='utf-8') as file:
data = json.load(file)

# ویرایش داده‌ها
data["age"] += 1

# ذخیره در فایل جدید
with open('output.json', 'w', encoding='utf-8') as file:
json.dump(data, file, indent=4, ensure_ascii=False)
```

---

### **نکات مهم**
- همیشه از `encoding='utf-8'` استفاده کنید تا از مشکلات کاراکترهای غیر ASCII جلوگیری شود.
- برای فایل‌های بزرگ، از `ijson` یا پردازش جریان‌محور استفاده کنید.
- از `indent` برای خوانایی بهتر خروجی استفاده کنید.

امیدوارم این راهنما به شما کمک کند! 😊