কম্পিউটার টিউটোরিয়াল

পাইথন JSONDecodeError: কারণ, উদাহরণ ও সমাধান

JSONDecodeError কী?

json.decoder.JSONDecodeError তখন উঠে যখন পাইথনের json.load() বা json.loads() ফাংশনটি অসম্পূর্ণ বা ভুল ফরম্যাটের JSON ডেটা পাড় করতে চায়। সাধারণ কারণ: মিসিং কোমা, কোলন, ব্রাকেট, বা কোটেশন মার্কস।

একটি বাস্তব উদাহরণ

ভুল JSON ফাইল (equipment.json)

[
  {
    "name": "Laura Harper",
    "equip_id" "309"   // ❌ কোলন (:) মিসিং
  }
]

পাইথন কোড

import json

with open("equipment.json") as file:
    data = json.load(file)
print("Data loaded successfully")

এরর মেসেজ

json.decoder.JSONDecodeError: Expecting ':' delimiter: line 3 column 16 (char 47)

এরর মেসেজে লাইন নম্বর, কলাম এবং ক্যারেক্টার পজিশন দেওয়া থাকে — যা ডিবাগিং-এ খুব সাহায্য করে।

সমাধান ১: JSON ফাইলটি ফিক্স করুন

ভুল লাইনটি সঠিক করুন:

"equip_id": "309",  // ✅ কোলন যোগ করুন

সমাধান ২: try-except দিয়ে গ্রেসফুল হ্যান্ডলিং

import json

try:
    with open("equipment.json") as file:
        data = json.load(file)
    print("Equipment data loaded successfully.")
except json.JSONDecodeError as e:
    print(f"JSON Format Error: {e.msg} at line {e.lineno}, column {e.colno}")
    # লগিং, ডিফল্ট ডেটা লোড, বা ইউজারকে নোটিফাই করুন

সঠিক JSON ফরম্যাটের নিয়মাবলী

  • কী এবং স্ট্রিং ভ্যালুতে ডাবল কোটেশন (") ব্যবহার করুন (সিঙ্গেল কোট ' অনুমোদিত নয়)।
  • সব কী-ভ্যালু পেয়ারের মধ্যে কোলন (:) থাকতে হবে।
  • পেয়ারগুলো কোমা (,) দিয়ে আলাদা করতে হবে (লাস্ট পেয়ারের পরে কোমা নয়)।
  • অবজেক্ট {} এবং অ্যারে [] প্রপারলি বন্ধ করতে হবে।

প্রো টিপ: JSON Validator টুল ব্যবহার করুন

বড় JSON ফাইল ডিবাগ করতে JSONLint বা VS Code-এর বিল্ট-ইন JSON ভ্যালিডেটর ব্যবহার করুন।

নিষ্কর্ষ

JSONDecodeError সমাধানের দুটি পথ: (১) এরর মেসেজ পড়ে JSON ফাইলটি সঠিক করুন, (২) প্রোডাকশন কোডে try-except ব্যবহার করে প্রোগ্রাম ক্র্যাশ রোধ করুন এবং অর্থবহ ফিডব্যাক দিন।

  1. পাইথনে পান্ডাজ এবং ম্যাটপ্লটলিব দিয়ে ডেটা অ্যানালাইসিস এবং ভিজ্যুয়ালাইজেশন

  2. পাইথনে ডেটা অ্যানালিসিস ও ভিজুয়ালাইজেশন (Python Data Analysis and Visualization)

  3. পাইথনে ডেটা অ্যানালাইসিস ও ভিজ্যুয়ালাইজেশন (pandas, matplotlib)

  4. Python While Loop: পরিচিতি ও ব্যাখ্যা