এখনও পর্যন্ত দেওয়া উত্তর সহ দুটি ইস্যু, উদাহরণস্বরূপ, যদি এই জাতীয় মানহীন JSON প্রবাহিত করে। কারণ তখন একজনকে আগত স্ট্রিং (পাইথন অভিধান নয়) ব্যাখ্যা করতে হতে পারে might
ইস্যু 1 - demjson
: পাইথন 3.7 সহ। + এবং কনডা ব্যবহার করে আমি ডেমজনকে ইনস্টল করতে সক্ষম হইনি যেহেতু আপত্তিজনকভাবে এটি বর্তমানে পাইথন> 3.5 সমর্থন করে না। সুতরাং আমার সহজ সমাধানগুলির সাথে সমাধানের প্রয়োজন, উদাহরণস্বরূপ ast
এবং / অথবাjson.dumps
।
সংখ্যা 2 - ast
এবংjson.dumps
: যদি কোনও জেএসওএন উভয়ই একক উদ্ধৃত হয় এবং কমপক্ষে একটি মানে একটি স্ট্রিং থাকে, যার পরিবর্তে একক উদ্ধৃতি থাকে তবে আমি খুঁজে পেয়েছি এমন একমাত্র সহজ তবে ব্যবহারিক সমাধান উভয়ই প্রয়োগ করা হচ্ছে:
নিম্নলিখিত উদাহরণে আমরা ধরে নিই line
যে আসন্ন JSON স্ট্রিং অবজেক্ট:
>>> line = str({'abc':'008565','name':'xyz','description':'can control TV\'s and more'})
পদক্ষেপ 1: ast.literal_eval()
পদক্ষেপ 2 ব্যবহার করে আগত স্ট্রিংটিকে অভিধানে json.dumps
রূপান্তর করুন: কী এবং মানগুলির নির্ভরযোগ্য রূপান্তরকরণের জন্য এটি প্রয়োগ করুন , তবে মানগুলির বিষয়বস্তুগুলিকে স্পর্শ না করে :
>>> import ast
>>> import json
>>> print(json.dumps(ast.literal_eval(line)))
{"abc": "008565", "name": "xyz", "description": "can control TV's and more"}
json.dumps
একা কাজটি করবে না কারণ এটি JSON ব্যাখ্যা করে না, তবে কেবল স্ট্রিংটি দেখবে। অনুরূপ ast.literal_eval()
: যদিও এটি JSON (অভিধান) সঠিকভাবে ব্যাখ্যা করে, এটি আমাদের যা প্রয়োজন তা রূপান্তর করে না।