কম্পিউটার

পাইথন JSONDecodeError ব্যাখ্যা এবং সমাধান

অনেক ডেভেলপার একটি JSON ফাইলে একটি প্রোগ্রাম থেকে ডেটা সঞ্চয় করে; অন্যান্য প্রোগ্রামের রেফারেন্স API যার জন্য JSON এর সাথে কাজ করা প্রয়োজন। প্রকৃতপক্ষে, JSON, বা এর পাইথন সমতুল্য অভিধানের জন্য একটি ব্যবহারের ক্ষেত্রে খুঁজে পেতে আপনার কোন সমস্যা হবে না।

আপনি যখন JSON ডেটা নিয়ে কাজ করছেন তখন আপনি একটি JSONDecodeError সম্মুখীন হতে পারেন। এই নির্দেশিকায়, আমরা JSONDecodeError এর কারণ এবং এই ত্রুটিটি কীভাবে ঠিক করতে হবে সে সম্পর্কে কথা বলতে যাচ্ছি।

Python JSONDecodeError

একটি পাইথন JSONDecodeError নির্দেশ করে যে আপনার JSON ডেটা ফর্ম্যাট করার পদ্ধতিতে একটি সমস্যা আছে। উদাহরণস্বরূপ, আপনার JSON ডেটাতে একটি কোঁকড়া বন্ধনী অনুপস্থিত হতে পারে, অথবা এমন একটি কী আছে যার কোনো মান নেই, বা অন্য কোনো সিনট্যাক্স অনুপস্থিত।

একটি JSONDecodeError সম্পূর্ণরূপে ঠিক করতে, সমস্যাটি কী তা দেখতে আপনাকে একটি JSON ফাইলে যেতে হবে। আপনি যদি ভবিষ্যতে একাধিক সমস্যার সম্মুখীন হতে পারেন বলে আশা করেন, তাহলে আপনার JSONDecodeError হ্যান্ডেল করার জন্য ব্লক ব্যতীত আপনি চেষ্টা করে দেখতে পারেন।

JSONDecodeError কীওয়ার্ড দ্বারা অনুসরণ করা হলে, আপনি একটি সংক্ষিপ্ত বিবরণ দেখতে পাবেন যা ত্রুটির কারণ বর্ণনা করে।

সমস্ত সঠিকভাবে ফর্ম্যাট করা JSON এইরকম হওয়া উচিত:

{
	"key": "value"
}

"মান" যেকোনো বৈধ JSON মান হতে পারে, যেমন একটি তালিকা, একটি স্ট্রিং বা অন্য JSON অবজেক্ট।

একটি উদাহরণ দৃশ্য

আমরা এমন একটি প্রোগ্রাম তৈরি করছি যা JSON অবজেক্টের একটি তালিকা সঞ্চয় করে যা প্রতিনিধিত্ব করে যে কোন কম্পিউটারগুলি একটি ব্যবসায় কর্মীদের জন্য জারি করা হয়েছে। প্রতিটি JSON অবজেক্ট এইরকম হওয়া উচিত:

81% অংশগ্রহণকারী বলেছেন যে তারা বুটক্যাম্পে যোগ দেওয়ার পরে তাদের প্রযুক্তিগত কাজের সম্ভাবনা সম্পর্কে আরও আত্মবিশ্বাসী বোধ করেছেন। আজই একটি বুটক্যাম্পের সাথে মিলিত হন৷

গড় বুটক্যাম্প গ্র্যাড একটি বুটক্যাম্প শুরু করা থেকে শুরু করে তাদের প্রথম চাকরি খোঁজা পর্যন্ত ক্যারিয়ারের পরিবর্তনে ছয় মাসেরও কম সময় কাটিয়েছে।

[
	{
		"name": "Employee Name",
		"equip_id": "000"
	}
]

আমরা এই JSON অবজেক্টগুলিকে equipment.json নামে একটি ফাইলে সংরক্ষণ করি। ফাইলটিতে শুধুমাত্র একটি এন্ট্রি রয়েছে:

[
	{
		"name": "Laura Harper",
		"equip_id" "309"
	}
]

আমাদের প্রোগ্রামে এই ডেটা পড়তে, আমরা json মডিউল ব্যবহার করতে পারি:

import json

with open("equipment.json") as file:
	data = json.load(file)

print("Equipment data has been successfully retrieved.")

প্রথমে, আমরা json মডিউল আমদানি করি যা আমরা একটি JSON ফাইল পড়ার জন্য ব্যবহার করি। তারপর, আমরা একটি open() ব্যবহার করি আমাদের JSON ফাইলের বিষয়বস্তু পড়ার বিবৃতি। আমরা কনসোলে একটি বার্তা প্রিন্ট আউট করি যা আমাদের বলে যে আমাদের উইথ স্টেটমেন্ট চালানোর পরে সরঞ্জামের ডেটা পুনরুদ্ধার করা হয়েছে।

আসুন আমাদের কোড চালাই এবং দেখুন কি হয়:

Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
  File "/usr/lib/python3.8/json/__init__.py", line 293, in load
	return loads(fp.read(),
  File "/usr/lib/python3.8/json/__init__.py", line 357, in loads
	return _default_decoder.decode(s)
  File "/usr/lib/python3.8/json/decoder.py", line 337, in decode
	obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python3.8/json/decoder.py", line 353, in raw_decode
	obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Expecting ':' delimiter: line 4 column 16 (char 47

আমাদের কোড একটি দীর্ঘ ত্রুটি ফেরত. আমরা দেখতে পাচ্ছি পাইথন JSONDecodeError শব্দটির পরে আমাদের ত্রুটির কারণ বর্ণনা করে৷

সমাধান

আমাদের JSONDecodeError আমাদের বলছে যে আমরা আমাদের JSON ডেটাতে একটি কোলন (:) মিস করছি। এই কোলনটি 16 নম্বর কলামে চার লাইনে উপস্থিত হওয়া উচিত। যদি আমরা আমাদের equipment.json ফাইলে ডেটার এই লাইনটি দেখি, আমরা দেখতে পাব আমাদের JSON অবৈধ:

"equip_id" "309",

আমাদের কোড একটি কোলন অনুপস্থিত. এই ত্রুটিটি ঠিক করতে, আমাদের একটি কোলন যোগ করা উচিত:

"equip_id": "309",

এখন যেহেতু আমরা আমাদের ডেটা যেভাবে উপস্থাপন করা হয় তার সাথে সমস্যার সমাধান করেছি, আমরা আবার আমাদের প্রোগ্রাম চালানোর চেষ্টা করতে পারি:

Equipment data has been successfully retrieved.

আমাদের কোড সফলভাবে সঞ্চালিত হয়.

বিকল্পভাবে, আমরা একটি চেষ্টা ব্যবহার করতে পারি...এই সমস্যাটি পরিচালনা করার জন্য হ্যান্ডলার ব্যতীত যাতে আমরা অন্য ফর্ম্যাটিং সমস্যার সম্মুখীন হলে আমাদের কোড অবিলম্বে একটি ত্রুটি ফেরত না দেয়:

import json

try:
	with open("equipment.json") as file:
		data = json.load(file)

	print("Equipment data has been successfully retrieved.")
except json.decoder.JSONDecodeError:
	print("There was a problem accessing the equipment data.")

আমাদের JSON ডেটাতে কোনো ত্রুটি থাকলে, এই প্রোগ্রামটি ফিরে আসবে:

There was a problem accessing the equipment data.

অন্যথায়, প্রোগ্রামটি ডেটা পড়বে এবং তারপরে কনসোলে নিম্নলিখিত পাঠ্যটি প্রদর্শন করবে:

Equipment data has been successfully retrieved.

উপসংহার

পাইথন JSONDecodeError নির্দেশ করে যে একটি JSON অবজেক্ট কিভাবে ফরম্যাট করা হয় তাতে সমস্যা আছে। এই ত্রুটিটি ঠিক করতে, আপনাকে ত্রুটি বার্তাটি পড়তে হবে এবং আপনার JSON ডেটা ঠিক করার জন্য আপনাকে গাইড করতে এটি ব্যবহার করতে হবে। বিকল্পভাবে, আপনি একটি চেষ্টা ব্যবহার করতে পারেন...এরর ধরতে এবং পরিচালনা করতে ব্লক ছাড়া।

আপনি কি পাইথন কোডিং সম্পর্কে আরও জানতে আগ্রহী? আমাদের কিভাবে পাইথন শিখতে হয় গাইড পড়ুন। আপনি কীভাবে পাইথন শিখবেন সে সম্পর্কে বিশেষজ্ঞের পরামর্শ এবং আপনার জ্ঞান তৈরিতে সহায়তা করার জন্য শেখার সংস্থানগুলির একটি তালিকা পাবেন।


  1. পাইথন প্রোগ্রামের সাথে ডেটা বিশ্লেষণ এবং ভিজ্যুয়ালাইজেশন

  2. পাইথন ডেটা বিশ্লেষণ এবং ভিজ্যুয়ালাইজেশন

  3. পাইথনে ডেটা বিশ্লেষণ এবং ভিজ্যুয়ালাইজেশন?

  4. পাইথন যখন লুপ:ভূমিকা এবং ব্যাখ্যা