আপনার ব্রাউজারেই JSON ফরম্যাট, ভ্যালিডেট ও মিনিফাই করুন
JSON, বা JavaScript Object Notation, আধুনিক ওয়েবের সার্বজনীন ভাষা। আপনি যে প্রায় প্রতিটি REST API কল করেন তা JSON ফেরত দেয়, বেশিরভাগ কনফিগারেশন ফাইল এর উপর নির্ভর করে, এবং সার্ভিস ও ফ্রন্ট-এন্ডের মধ্যে প্রবাহিত ডেটার একটি বিশাল অংশ JSON হিসেবে সিরিয়ালাইজ করা হয়। এটি জনপ্রিয় হওয়ার একটি ভালো কারণ আছে: ফরম্যাটটি সহজ, ভাষা-নিরপেক্ষ, এবং প্রোগ্রামাররা যে অবজেক্ট, অ্যারে, স্ট্রিং ও নম্বরে ইতিমধ্যে চিন্তা করেন তার সাথে পরিষ্কারভাবে মিলে যায়। কিন্তু এই একই সংক্ষিপ্ততার একটি খারাপ দিকও আছে। যখন একটি সার্ভার আপনাকে শত শত নেস্টেড কী দিয়ে ভরা এক-লাইনের রেসপন্স দেয়, তখন JSON-কে আকর্ষণীয় করে তোলা কাঠামোটি অক্ষরের একটি প্রাচীরের মধ্যে হারিয়ে যায়।
speedor.net JSON ফরম্যাটার সেই কাঠামো ফিরিয়ে দেওয়ার জন্য তৈরি। আপনার ডেটা পেস্ট করুন, এবং এটি সাথে সাথে JSON-কে সুন্দরভাবে প্রিন্ট, ভ্যালিডেট ও মিনিফাই করে, সম্পূর্ণভাবে আপনার ব্রাউজার ট্যাবের ভিতরে। কোনো কিছুই কোনো সার্ভারে আপলোড হয় না, যা তখন অনেক গুরুত্বপূর্ণ হয়ে ওঠে যখন আপনি যে পেলোড পরীক্ষা করছেন তাতে টোকেন, গ্রাহকের রেকর্ড বা অভ্যন্তরীণ শনাক্তকারী থাকে।

কেন ইনডেন্টেশন JSON-কে আবার পাঠযোগ্য করে তোলে
ফরম্যাটিং, যাকে সুন্দরীকরণ বা প্রেটি-প্রিন্টিংও বলা হয়, কমপ্যাক্ট বা মিনিফাইড JSON নিয়ে লাইন ব্রেক ও সামঞ্জস্যপূর্ণ ইনডেন্টেশন যোগ করে। তথ্য অভিন্ন থাকে; শুধু হোয়াইটস্পেস পরিবর্তিত হয়। তবুও সেই হোয়াইটস্পেসই আপনার চোখকে নেস্টিং গভীরতা অনুসরণ করতে, কোথায় একটি অবজেক্ট শেষ হয় আর পরেরটি শুরু হয় তা চিহ্নিত করতে, এবং তিনটি আইটেমের একটি অ্যারেকে তিনশ আইটেমের অ্যারে থেকে আলাদা করতে দেয়। রাত দুইটায় যখন আপনি একটি ইন্টিগ্রেশন ডিবাগ করছেন, তখন একটি পাঠযোগ্য গাছ ও একটি অবিচ্ছিন্ন স্ট্রিং-এর মধ্যেকার পার্থক্যই বাগটি খুঁজে পাওয়া বা মিস করার পার্থক্য।
একটি ভালো ফরম্যাটার কী-এর ক্রম ও ঠিক মানগুলোও অক্ষত রাখে, তাই আপনি যা পড়ছেন তা প্রকৃতপক্ষেই API যা পাঠিয়েছে তাই। আপনি একটি পুনরায়-রেন্ডার করা আনুমানিক রূপ দেখছেন না; আপনি একই বাইট দেখছেন, শুধু এমনভাবে সাজানো যাতে একজন মানুষ যন্ত্রের মতোই সহজে সেটা বুঝতে পারে।
ভ্যালিডেশন এবং সবাইকে ফাঁদে ফেলা ভুলগুলো
সুন্দরীকরণ কাজের অর্ধেক মাত্র। JSON ফরম্যাট করার আগে, এটি বৈধ হতে হবে, এবং ফরম্যাটের কঠোর নিয়মগুলো মানুষের প্রত্যাশার চেয়ে অনেক বেশি ভুল ধরে ফেলে। একটি ভ্যালিডেটর আপনার ইনপুট পার্স করে এবং ঠিক কোথায় এটি ভাঙছে তা বলে দেয়, সাধারণত একটি লাইন ও অবস্থান নির্দেশ করে যাতে আপনাকে অন্ধভাবে খুঁজতে না হয়। নিচের হাতেগোনা ভুলগুলোই ভাঙা JSON-এর অধিকাংশের কারণ:
- শেষে অতিরিক্ত কমা। JSON একটি অবজেক্ট বা অ্যারের শেষ উপাদানের পর কমা নিষিদ্ধ করে। JavaScript এটি সহ্য করে, যে কারণে ডেভেলপাররা অভ্যাসবশত এটি পেস্ট করে ফেলেন।
- সিঙ্গেল কোট। স্ট্রিং ও কী-কে অবশ্যই ডাবল কোট ব্যবহার করতে হবে। সোর্স কোড থেকে সরাসরি একটি অবজেক্ট লিটারেল তুলে আনলে প্রায়ই সিঙ্গেল কোট থেকে যায়, এবং পার্সার এটি প্রত্যাখ্যান করে।
- কোটবিহীন কী। প্রতিটি কী-কে অবশ্যই একটি কোটেড স্ট্রিং হতে হবে। খালি কী, যা JavaScript অবজেক্টে ঠিকঠাক কাজ করে, তা অবৈধ JSON।
- অনুপস্থিত বা অমিল ব্র্যাকেট। একটি অসমাপ্ত
{বা[, বা একটি বাড়তি ক্লোজিং ব্র্যাকেট, পুরো ডকুমেন্টকে বিপথগামী করে দেয়। ফরম্যাটার হাইলাইট করে দেয় ঠিক কোথায় ভারসাম্য ভেঙেছে। - কমেন্ট ও আনডিফাইন্ড মান। JSON-এ কোনো কমেন্ট নেই এবং কোনো
undefinedনেই; শুধুnull, বুলিয়ান, নম্বর, স্ট্রিং, অ্যারে ও অবজেক্ট অনুমোদিত।
প্রথমে সন্দেহজনক পেলোড ভ্যালিডেটরের মধ্য দিয়ে চালান এবং এই সমস্যাগুলো বিভ্রান্তিকর ব্যর্থ ডিপ্লয়ের একটি চেইনের পরিবর্তে সেকেন্ডের মধ্যে প্রকাশ পায়।

পেলোড সংকুচিত করতে মিনিফাই করা
বিপরীত অপারেশনটিও সমান কার্যকর। মিনিফাই করা প্রতিটি ঐচ্ছিক হোয়াইটস্পেস বাইট সরিয়ে দেয়, আপনার JSON-কে সবচেয়ে টাইট এক-লাইন রূপে ফিরিয়ে নিয়ে আসে। এটিই ঠিক যা আপনি চান যখন ডেটা নেটওয়ার্কে বা একটি কনফিগ ভ্যালুতে যাচ্ছে, কারণ ছোট পেলোড মানে কম ব্যান্ডউইথ ও দ্রুত ট্রান্সফার। একটি সাধারণ ওয়ার্কফ্লো হলো একটি রেসপন্স সুন্দর করা যখন আপনি তা অধ্যয়ন করছেন, যা ভুল আছে তা ঠিক করা, তারপর ফলাফলটি কমিট করা বা একটি এনভায়রনমেন্ট ভ্যারিয়েবলে পেস্ট করার আগে মিনিফাই করা। একটি টুলই সেই লুপের উভয় প্রান্ত সামলায়।
লোকাল প্রসেসিং সংবেদনশীল ডেটা গোপন রাখে
যেহেতু প্রতিটি ধাপ আপনার নিজের ব্রাউজারের ভিতরে JavaScript-এ চলে, আপনার পেস্ট করা JSON কখনোই আপনার মেশিন ছেড়ে যায় না। এটি কোনো বিপণন কৌশল নয়, এটি একটি বাস্তব নিশ্চয়তা। আপনি বেয়ারার টোকেনে ভরা একটি কাঁচা API রেসপন্স, ব্যবহারকারীর ডেটার একটি এক্সপোর্ট, বা একটি অভ্যন্তরীণ সার্ভিস কনফিগ পেস্ট করতে পারেন এই দুশ্চিন্তা ছাড়াই যে একটি তৃতীয়-পক্ষের সার্ভার তা লগ করছে। ট্যাবটি বন্ধ করুন এবং ডেটা চলে যায়। ডেটা-হ্যান্ডলিং নিয়মের অধীনে কাজ করা যে কারো জন্য, শুধু-লোকাল প্রসেসিং ঝুঁকির একটি সম্পূর্ণ শ্রেণী দূর করে দেয়।
একবার আপনার JSON পরিষ্কার হয়ে গেলে, আপনি এটিকে আরও এগিয়ে নিতে চাইতে পারেন। আমাদের বাকি ডেভেলপার টুল ঘুরে দেখুন, JSON থেকে YAML দিয়ে একটি কাঠামো রূপান্তর করুন, অথবা Base64 ব্যবহার করে একটি এমবেডেড মান ডিকোড করুন। প্রতিটি টুল একই নীতি অনুসরণ করে: দ্রুত, বিনামূল্যে, এবং সম্পূর্ণভাবে আপনার ব্রাউজারে প্রক্রিয়াকৃত।
প্রায়শই জিজ্ঞাসিত প্রশ্ন
আমার JSON কি কোনো সার্ভারে আপলোড হয়?
না। ফরম্যাটারটি সম্পূর্ণভাবে JavaScript ব্যবহার করে আপনার ব্রাউজারে চলে। আপনার ডেটা কখনো কোথাও পাঠানো হয় না, তাই আপনি নিরাপদে সংবেদনশীল API রেসপন্স বা কনফিগারেশন ফাইল পেস্ট করতে পারেন।
ফরম্যাটিং ও মিনিফাইং-এর মধ্যে পার্থক্য কী?
ফরম্যাটিং JSON-কে পাঠযোগ্য করতে ইনডেন্টেশন ও লাইন ব্রেক যোগ করে। মিনিফাইং পেলোড যতটা সম্ভব ছোট করতে সব ঐচ্ছিক হোয়াইটস্পেস সরিয়ে দেয়। ডেটা নিজে উভয় রূপেই অভিন্ন থাকে।
আমার JSON কেন ভ্যালিডেট হতে ব্যর্থ হচ্ছে?
সবচেয়ে সাধারণ কারণগুলো হলো শেষে অতিরিক্ত কমা, ডাবল কোটের বদলে সিঙ্গেল কোট, কোটবিহীন কী, কমেন্ট, এবং অনুপস্থিত বা অমিল ব্র্যাকেট। ভ্যালিডেটর সমস্যাটি যেখানে ঘটে সেই লাইন নির্দেশ করে।
আমি কি JSON-এ সিঙ্গেল কোট ব্যবহার করতে পারি?
না। JSON স্পেসিফিকেশন সব স্ট্রিং ও কী-এর জন্য ডাবল কোট আবশ্যক করে। সিঙ্গেল কোট JavaScript-এ বৈধ কিন্তু JSON-এ নয়, যা ভুলের একটি ঘন ঘন উৎস।
টুলটি ফরম্যাট করার সময় কি আমার ডেটা পরিবর্তন করে?
না। ফরম্যাটিং শুধু হোয়াইটস্পেস যোগ বা বাদ দেয়। কী, মান ও তাদের ক্রম ঠিক যেমন ছিল তেমনই থাকে, তাই আপনি যা পড়ছেন তা API আসলে যা পাঠিয়েছে তাই।
কোনো সাইজ সীমা আছে কি?
যেহেতু প্রসেসিং লোকালি হয়, ব্যবহারিক সীমা সার্ভার ক্যাপের বদলে আপনার ডিভাইস ও ব্রাউজারের উপর নির্ভর করে। সাধারণ API রেসপন্স ও কনফিগ ফাইল সঙ্গে সঙ্গে ফরম্যাট হয়।
