ভাষা বেছে নিন

জেসন ফরম্যাটার ও বিউটিফায়ার

সহজেই জেসন (JSON) ডেটা বিউটিফাই বা মিনিফাই করুন। কাস্টম ইনডেন্টেশন, অ্যালফাবেটিকাল-কি সর্টিং এবং সিনট্যাক্স এরর হাইলাইট করার সুবিধা রয়েছে।

Mehmet Demiray (মেহমেত দেমিরায়) প্রকাশিত আপডেট হয়েছে
শেয়ার করুন
সুন্দরভাবে সাজান বা এক লাইনে সংক্ষিপ্ত করুন
সুন্দর করার সময় প্রতি নেস্টিং স্তরে স্পেসিং
অবজেক্টের কীগুলো বর্ণানুক্রমিকভাবে সাজান

জেসন ফরম্যাট করার প্রয়োজনীয়তা

JSON (JavaScript Object Notation) বর্তমানে ডেটা আদান-প্রদানের সবচেয়ে জনপ্রিয় মাধ্যম। ওয়েব অ্যাপ্লিকেশন থেকে শুরু করে মোবাইল অ্যাপ পর্যন্ত সব জায়গাতেই এর ব্যবহার রয়েছে। কিন্তু অনেক সময় সার্ভার থেকে আসা জেসন ডেটা একটি মাত্র লাইনে থাকে, যা পড়া বা বোঝা মানুষের পক্ষে প্রায় অসম্ভব। জেসন ফরম্যাটার টুলটি মূলত ডেটাকে সুন্দরভাবে সাজিয়ে উপস্থাপন করে, যাকে আমরা বিউটিফাই (beautify) করা বলি। এর ফলে ডেটার গঠন বোঝা সহজ হয় এবং কোডে কোনো ত্রুটি থাকলে তা দ্রুত শনাক্ত করা যায়। যখন অ্যাপ্লিকেশন থেকে সার্ভারে ডেটা পাঠানো হয়, তখন ডেটার আকার ছোট রাখা জরুরি। তখন জেসন ফরম্যাটার ব্যবহার করে ডেটাকে মিনিফাই (minify) করা যায়, অর্থাৎ অপ্রয়োজনীয় স্পেস বা লাইন ব্রেক মুছে ফেলা যায়। এর ফলে ডেটার সাইজ কমে যায় এবং নেটওয়ার্কে ডেটা ট্রান্সফার দ্রুত হয়। ডেভেলপার এবং ডেটা অ্যানালিস্টদের প্রতিদিনের কাজে এই টুলটি অত্যন্ত কার্যকরী। প্রয়োজনে সিএসভি থেকে জেসন তৈরি করার সময় ডেটার গঠন ঠিক আছে কি না, তা যাচাই করতেও এটি কাজে লাগে।

বিউটিফাই করার বিভিন্ন অপশন

জেসন ফরম্যাটার ব্যবহার করে ডেটা সাজানোর সময় বেশ কিছু কাস্টমাইজেশন অপশন পাওয়া যায়, যা কোড পড়ার অভিজ্ঞতাকে আরও উন্নত করে। এর মধ্যে সবচেয়ে গুরুত্বপূর্ণ হলো ইনডেন্টেশন (indentation)। আপনি আপনার পছন্দ বা প্রজেক্টের নিয়ম অনুযায়ী ২ বা ৪ স্পেস, অথবা ট্যাবের মাধ্যমে ইনডেন্টেশন নির্ধারণ করতে পারেন। সাধারণত জাভাস্ক্রিপ্ট বা টাইপস্ক্রিপ্ট প্রজেক্টে ২ স্পেস ব্যবহার করা হয়, আবার পাইথন বা অন্যান্য ব্যাকএন্ড প্রজেক্টে ৪ স্পেস বেশি জনপ্রিয়। এই টুলের আরেকটি বিশেষ ফিচার হলো কি (key) সর্টিং। এর মাধ্যমে জেসন অবজেক্টের কিগুলোকে বর্ণানুক্রমিকভাবে (অ্যালফাবেটিক্যালি) সাজানো যায়। যদিও জেসনের নিয়মানুযায়ী কি-এর ক্রম ডেটার অর্থে কোনো পরিবর্তন আনে না, তবুও বড় কনফিগারেশন ফাইল বা এপিআই রেসপন্স পড়ার সময় সর্ট করা থাকলে নির্দিষ্ট কোনো ভ্যালু খুঁজে পাওয়া সহজ হয়। গিট (Git) বা অন্য কোনো ভার্সন কন্ট্রোল সিস্টেমে দুটি ফাইলের মধ্যে পার্থক্য (diff) দেখার সময়ও কিগুলো সর্ট করা থাকলে অনেক সুবিধা পাওয়া যায়। ওয়াইএএমএল ফাইল থেকে জেসনে রূপান্তর করার পরও ফাইলের গঠন সুন্দর করতে এই অপশনগুলো দারুণ কাজে দেয়।

মিনিফিকেশন এবং ডেটা ট্রান্সফার

প্রোডাকশন পরিবেশে (production environment) এপিআই (API) থেকে যখন ডেটা পাঠানো হয়, তখন ডেটার আকার যথাসম্ভব ছোট রাখা প্রয়োজন। জেসন ফরম্যাটার টুলের মিনিফাই অপশনটি এই কাজটিই করে। এটি জেসন ফাইল থেকে সমস্ত অপ্রয়োজনীয় হোয়াইটস্পেস, লাইন ব্রেক এবং ইনডেন্টেশন মুছে ফেলে ডেটাকে একটিমাত্র লাইনে নিয়ে আসে। মানুষের পড়ার জন্য এটি সুবিধাজনক না হলেও, কম্পিউটার বা ব্রাউজারের জন্য এটি কোনো সমস্যা তৈরি করে না। উদাহরণস্বরূপ, একটি ১০০ kB সাইজের বিউটিফাইড জেসন ফাইলকে মিনিফাই করলে তার সাইজ ২০% থেকে ৩০% পর্যন্ত কমে যেতে পারে। বিশেষ করে মোবাইল নেটওয়ার্ক বা ধীর গতির ইন্টারনেটে এই ছোট সাইজের পে-লোড (payload) অ্যাপ্লিকেশনকে অনেক দ্রুত কাজ করতে সাহায্য করে। ক্লায়েন্ট সাইডে ডেটা পাঠানোর আগে সবসময় জেসন মিনিফাই করে নেওয়া ভালো প্র্যাকটিস হিসেবে ধরা হয়। আপনি যদি এক্সএমএল থেকে জেসন ফরম্যাটে ডেটা পরিবর্তন করেন, তবে প্রোডাকশনে ব্যবহারের আগে তা মিনিফাই করে নেওয়া উচিত।

বৈধ জেসন ফাইলের নিয়মাবলি

একটি জেসন ফাইলকে অবশ্যই কিছু নির্দিষ্ট সিনট্যাক্স বা নিয়ম মেনে চলতে হয়, যা RFC 8259 বা ECMA-404 স্ট্যান্ডার্ড দ্বারা নির্ধারিত। জেসন ফরম্যাটার শুধুমাত্র বৈধ (valid) জেসন ডেটা নিয়েই কাজ করতে পারে। সবচেয়ে সাধারণ নিয়ম হলো, জেসন অবজেক্টের প্রতিটি কি (key) এবং স্ট্রিং ভ্যালুকে অবশ্যই ডাবল কোটেশন চিহ্নের (" ") ভেতরে রাখতে হবে। সিঙ্গেল কোটেশন ব্যবহার করলে তা অবৈধ বলে গণ্য হবে। আরেকটি সাধারণ ভুল হলো ট্রেইলিং কমা (trailing comma)। অবজেক্ট বা অ্যারের শেষ উপাদানের পর কমা দেওয়া জাভাস্ক্রিপ্টে বৈধ হলেও জেসনে তা সম্পূর্ণ অবৈধ। যদি আপনার ইনপুট করা জেসন ডেটায় কোনো সিনট্যাক্স এরর থাকে, তবে জেসন ফরম্যাটার টুলটি আপনাকে একটি সুনির্দিষ্ট এরর মেসেজ দেখাবে। এই মেসেজে ঠিক কত নম্বর লাইন এবং কলামে ভুলটি রয়েছে, তা উল্লেখ থাকে, ফলে খুব সহজেই ভুলটি সংশোধন করা সম্ভব হয়। জেডব্লিউটি ডিকোড করার পর প্রাপ্ত পে-লোড ডেটা বিশ্লেষণ করার সময়ও এই নিয়মগুলো মনে রাখা জরুরি।

সাধারণ জিজ্ঞাসা

জেসন ফাইল নিয়ে কাজ করার সময় কিছু সাধারণ প্রশ্ন প্রায়ই সামনে আসে। প্রথমত, জেসন ফাইলে কি-এর ক্রম (key order) কি কোনো অর্থ বহন করে? উত্তর হলো, না। জেসন স্ট্যান্ডার্ড অনুযায়ী অবজেক্ট হলো আনঅর্ডারড (unordered) কি-ভ্যালু পেয়ারের সমষ্টি। তাই কি-গুলো যে ক্রমেই থাকুক না কেন, ডেটার অর্থে কোনো পরিবর্তন হয় না। দ্বিতীয়ত, একটি বড় জেসন ফাইলে সিনট্যাক্স এরর কীভাবে খুঁজে পাব? জেসন ফরম্যাটার টুলে আপনার ডেটা পেস্ট করলেই টুলটি স্বয়ংক্রিয়ভাবে ভুলটি শনাক্ত করে লাইন নম্বরসহ দেখিয়ে দেবে। তৃতীয়ত, প্রোডাকশন এপিআই-এর জন্য কি জেসন মিনিফাই করা উচিত? হ্যাঁ, প্রোডাকশনে সবসময় মিনিফাই করা জেসন পাঠানো উচিত, কারণ এতে ব্যান্ডউইথ সাশ্রয় হয় এবং রেসপন্স টাইম কমে। শেষ প্রশ্ন, জেসন ফাইলে কি কমেন্ট (comment) লেখা যায়? না, জেসনের ডিজাইনে কমেন্ট করার কোনো সুযোগ রাখা হয়নি। ডেটা পার্সিং দ্রুত এবং সহজ রাখার জন্যই এই সিদ্ধান্ত নেওয়া হয়েছিল।

যেগুলোর উত্তর আমরা সবচেয়ে বেশি দিই।

জেসন ফাইলে কি 'কী' (key) এর ক্রম বা সিরিয়াল কোনো প্রভাব ফেলে?

না, জেসন (JSON) স্ট্যান্ডার্ড অনুযায়ী অবজেক্টের ভেতরের 'কী' গুলোর কোনো নির্দিষ্ট ক্রম থাকে না। তাই আপনি ডেটা যেভাবেই সাজান না কেন, প্রোগ্রামিং ল্যাঙ্গুয়েজগুলো তা একই রকম অর্থ হিসেবে ধরে নেয়। তবে মানুষের পড়ার সুবিধার জন্য বা দুটি ফাইলের মধ্যে পার্থক্য খোঁজার সময় 'কী' গুলো অ্যালফাবেটিক্যালি সাজিয়ে নেওয়া বেশ কাজের। আমাদের জেসন ফরম্যাটার টুলের সাহায্যে আপনি এক ক্লিকেই এই কাজটি করতে পারবেন।

অনেক বড় জেসন ফাইলে সিনট্যাক্স এরর (syntax error) কীভাবে খুঁজে বের করব?

ম্যানুয়ালি হাজার হাজার লাইনের কোড পড়ে ভুল বের করা বেশ কঠিন। জেসন ফরম্যাটার ব্যবহার করলে আপনি খুব সহজেই এই সমস্যার সমাধান করতে পারবেন। আপনি যখনই ইনপুট বক্সে আপনার কোড পেস্ট করবেন, টুলটি স্বয়ংক্রিয়ভাবে ইনভ্যালিড জেসন শনাক্ত করবে। ঠিক কত নম্বর লাইনে বা পজিশনে কমা বা কোটেশন মিসিং আছে, তার নির্ভুল মেসেজ টুলটি আপনাকে দেখিয়ে দেবে।

প্রোডাকশন এপিআই (API) এর জন্য কি জেসন ডেটা মিনিফাই (minify) করা উচিত?

হ্যাঁ, প্রোডাকশনের ক্ষেত্রে ডেটা মিনিফাই করা অত্যন্ত জরুরি। মিনিফাই করলে কোডের ভেতরের অপ্রয়োজনীয় স্পেস, ট্যাব এবং লাইন ব্রেক মুছে যায়। এর ফলে পে-লোডের আকার কমে যায় এবং নেটওয়ার্কের মাধ্যমে ডেটা অনেক দ্রুত ট্রান্সফার হয়। আপনি চাইলে ডেভেলপমেন্টের সময় ডেটা পড়ার সুবিধার জন্য বিউটিফাই করতে পারেন এবং লাইভ সার্ভারে পাঠানোর আগে জেসন ফরম্যাটার দিয়ে তা মিনিফাই করে নিতে পারেন।

জেসন ফাইলে কি কমেন্ট (comment) লেখা যায়?

না, জেসনের মূল স্ট্যান্ডার্ডে কমেন্ট লেখার কোনো নিয়ম নেই। এর মূল কারণ হলো জেসনকে যতটা সম্ভব সহজ এবং দ্রুত পার্স (parse) করার উপযোগী রাখা। আপনি যদি কোনো ফাইলে কমেন্ট রাখেন, তবে সেটি ইনভ্যালিড জেসন হিসেবে গণ্য হবে। তবে আপনি যদি কনফিগারেশন ফাইলের জন্য কমেন্ট ব্যবহার করতে চান, তবে জেসনের বদলে ইয়ামল (YAML) ব্যবহার করতে পারেন এবং পরে ইয়ামল থেকে জেসন কনভার্টার দিয়ে তা পরিবর্তন করে নিতে পারেন।

আমার কাছে এক্সেলে থাকা ডেটা আছে, সেটি কি সরাসরি এই টুলে ফরম্যাট করা যাবে?

এই টুলটি মূলত আগে থেকে তৈরি করা জেসন ডেটাকে সুন্দরভাবে সাজানোর বা ছোট করার জন্য ব্যবহৃত হয়। আপনার কাছে যদি এক্সেল বা সিএসভি ফরম্যাটে ডেটা থাকে, তবে প্রথমে আপনাকে সিএসভি থেকে জেসন কনভার্টার ব্যবহার করে ডেটা রূপান্তর করে নিতে হবে। এরপর সেই আউটপুটটি জেসন ফরম্যাটার দিয়ে আপনার পছন্দমতো ইনডেন্ট বা স্পেস দিয়ে সাজিয়ে নিতে পারবেন।

কোম্পানির গোপনীয় ডেটা এই টুলে ফরম্যাট করা কি নিরাপদ?

হ্যাঁ, এটি সম্পূর্ণ নিরাপদ। জেসন ফরম্যাটার টুলটি আপনার ব্রাউজারের লোকাল স্টোরেজে কাজ করে। এর মানে হলো আপনার দেওয়া কোনো ডেটাই আমাদের সার্ভারে আপলোড হয় না। আপনি নিশ্চিন্তে আপনার এপিআই রেসপন্স বা জেডব্লিউটি টোকেন এর ভেতরের ডেটা এখানে পেস্ট করে ফরম্যাট করতে পারেন।