UltKit
ছবি11
PDF13
ডকুমেন্ট ও ডেটা7
ভিডিও6
অডিও4
আরও টুল22

JSON ফরম্যাটার ও ভ্যালিডেটর

JSON পেস্ট করুন, তারপর সেটি সুন্দরভাবে সাজান, মিনিফাই করুন বা কী-গুলো সাজান। JSON পার্স না হলে ফরম্যাটার দেখায় পার্সার কোন লাইন ও কলামে আটকে গেছে, আর সমস্যার ঠিক নিচে একটি চিহ্ন দেয়। ফলে 3,000 লাইনের রেসপন্সে একটি বাদ পড়া কমা খুঁজে পেতে কয়েক সেকেন্ডই লাগে।

আউটপুট

০টি অক্ষর · ০টি শব্দ · ০টি লাইন

০টি অক্ষর · ০টি শব্দ · ০টি লাইন

সম্পূর্ণভাবে এই ব্রাউজার ট্যাবেই চলে। আপনার টেক্সট কখনও আপলোড বা সংরক্ষণ করা হয় না।

JSON মানের ধরন

RFC 8259 ঠিক এই মানগুলোই অনুমোদন করে। অবজেক্ট ও অ্যারে নেস্ট করা যায়; বাকি সবকিছু লিফ।

ধরনউদাহরণনিয়ম
অবজেক্ট{"id": 7, "tags": ["a"]}কী অবশ্যই ডাবল কোটে স্ট্রিং হতে হবে; সদস্যরা কমা দিয়ে আলাদা, শেষে বাড়তি কমা নয়।
অ্যারে[1, "two", null]যেকোনো মানের ক্রমিক তালিকা, মিশ্র ধরন চলবে।
স্ট্রিং"caf\u00e9 \"quoted\""শুধু ডাবল কোট; কন্ট্রোল ক্যারেক্টার এস্কেপ করতে হবে; \u এস্কেপে চারটি হেক্স অঙ্ক থাকে।
সংখ্যা-12.5e3শুধু দশমিক: ঐচ্ছিক মাইনাস, শুরুতে শূন্য নয়, ঐচ্ছিক ভগ্নাংশ ও এক্সপোনেন্ট। NaN বা Infinity নয়।
true, false ও nulltrueছোট হাতের অক্ষর, কোট ছাড়া।

পার্সার যা প্রত্যাখ্যান করে

নিচের প্রতিটি ইনপুট এই পেজ তৈরির সময় ফরম্যাটারের ব্যবহৃত একই JSON.parse-এ দেওয়া হয়েছে।

ইনপুটসমস্যাJSON.parse
{"a": 1,}শেষে বাড়তি কমাপ্রত্যাখ্যাত
{'a': 1}সিঙ্গেল কোটের স্ট্রিংপ্রত্যাখ্যাত
{"a": 1 /* note */}মন্তব্যপ্রত্যাখ্যাত
{a: 1}কোট ছাড়া কীপ্রত্যাখ্যাত
{"n": NaN}NaN JSON সংখ্যা নয়প্রত্যাখ্যাত
{"n": 012}শুরুতে শূন্যপ্রত্যাখ্যাত
{"n": 0x1F}হেক্সাডেসিমাল সংখ্যাপ্রত্যাখ্যাত

JSON স্ট্রিংয়ে এস্কেপ

অক্ষরJSON-এ লেখা
ডাবল কোট"\""
ব্যাকস্ল্যাশ"\\"
লাইন ফিড"\n"
ট্যাব"\t"
ক্যারেজ রিটার্ন"\r"
কন্ট্রোল ক্যারেক্টার U+0001"\u0001"
ফরোয়ার্ড স্ল্যাশ (এস্কেপ ঐচ্ছিক)"/"
নন-ASCII অক্ষর (এস্কেপ লাগে না)"é"

একটি সঠিক JSON ডকুমেন্ট যে নিয়মগুলো মেনে চলে

JSON-এর স্পেসিফিকেশন RFC 8259 (মূলত ECMA-404-এর সমতুল্য)। একটি ডকুমেন্ট মানে একটিমাত্র ভ্যালু: অবজেক্ট, অ্যারে, স্ট্রিং, সংখ্যা, true, false অথবা null। অবজেক্টের কী সবসময় ডাবল কোটের ভেতরে স্ট্রিং হয়। স্ট্রিংয়ে শুধু ডাবল কোট চলে এবং কোট, ব্যাকস্ল্যাশ ও U+0020-এর নিচের প্রতিটি কন্ট্রোল ক্যারেক্টার এস্কেপ করতে হয়; তাই স্ট্রিংয়ের ভেতরের ট্যাব ও লাইন ব্রেক লিখতে হয় \t ও \n দিয়ে। সিস্টেমের মধ্যে আদান-প্রদান করা JSON-এর জন্য RFC 8259 UTF-8-ও বাধ্যতামূলক করেছে।

সংখ্যা হবে দশমিক পদ্ধতির: শুরুতে শূন্য নয়, হেক্সাডেসিমাল নয়, NaN বা Infinity নয়, সামনে প্লাস চিহ্নও নয়। এই ফরম্যাটে কমেন্ট নেই এবং শেষে বাড়তি কমাও চলে না। বাস্তবে বেশিরভাগ ভুল হয় এই দুই নিয়মের কারণে, কারণ JavaScript অবজেক্ট লিটারেল, JSON5 এবং অনেক কনফিগ ফাইলে দুটোই চলে। নিচের রেফারেন্স টেবিলটি ফরম্যাটার যে পার্সার ব্যবহার করে, তাতে প্রতিটি সাধারণ ভুল দিয়ে তৈরি করা হয়েছে।

সুন্দরভাবে সাজানো, মিনিফাই ও কী সাজানো

প্রেটি-প্রিন্ট করলে লাইন ব্রেক ও ইন্ডেন্টেশন যোগ হয়, ফলে কাঠামো পড়া সহজ হয়; JavaScript প্রজেক্টে দুই স্পেস সবচেয়ে প্রচলিত, Python-এর json.dumps(indent=4)-এর সঙ্গে সাধারণত চার স্পেস ব্যবহার হয়, আর ট্যাবে প্রত্যেক পাঠক নিজের পছন্দমতো প্রস্থ ঠিক করতে পারেন। মিনিফাই করলে অপ্রয়োজনীয় সব স্পেস মুছে যায়, ফলে API পেলোড ছোট হয় এবং লগ বা এনভায়রনমেন্ট ভেরিয়েবলের জন্য ডকুমেন্ট এক লাইনে আঁটে।

কী সর্ট করলে প্রতিটি অবজেক্টের সদস্যগুলো রিকার্সিভভাবে বর্ণানুক্রমে সাজানো হয়। সংজ্ঞা অনুযায়ী JSON অবজেক্টের কোনো ক্রম নেই, তাই সর্ট করলে অর্থ বদলায় না, কিন্তু আলাদা সিস্টেমের দুটি ডকুমেন্ট তুলনা করা অনেক সহজ হয়। মনে রাখবেন, পার্স করার সময় সংখ্যা JavaScript ডাবলে রূপান্তরিত হয়: 2^53 (9,007,199,254,740,992)-এর বেশি পূর্ণসংখ্যা, যেমন কিছু ডেটাবেস ID, পুনরায় ফরম্যাট করলে নির্ভুলতা হারায়; তাই সেগুলো স্ট্রিং হিসেবে রাখুন।

JSON থেকে অন্য ফরম্যাটে

ফরম্যাট করা ডকুমেন্ট পড়তে সহজ, কিন্তু কখনো অন্য রূপে দরকার হয়। JSON থেকে CSV দিয়ে অবজেক্টের অ্যারে স্প্রেডশিট হয়ে যায়, আর ডেটা কনভার্টার পুরো ফাইল JSON, XML, YAML ও CSV-এর মধ্যে রূপান্তর করে।

সচরাচর জিজ্ঞাসা

কমেন্ট থাকলে ফরম্যাটার আমার JSON কেন বাতিল করে?
স্ট্যান্ডার্ড JSON-এ কমেন্টের কোনো সিনট্যাক্স নেই; RFC 8259 ইচ্ছে করেই তা বাদ দিয়েছে। কমেন্ট মুছে ফেলুন, অথবা যে টুল ফাইলটি পড়বে সে JSONC বা JSON5 সাপোর্ট করলে ফাইলটি সেই ফরম্যাটেই রাখুন।
JSON এররে "Unexpected token" মানে কী?
পার্সার এমন একটি ক্যারেক্টার পেয়েছে যা ওই জায়গায় থাকতে পারে না, যেমন সিঙ্গেল কোট, } এর আগে বাড়তি কমা বা কোট ছাড়া কী। দেখানো লাইন ও কলাম ওই ক্যারেক্টারটিকেই নির্দেশ করে।
কী সাজালে কি আমার ডেটা বদলে যায়?
না। JSON-এ অবজেক্টের সদস্যের ক্রমের কোনো অর্থ নেই, তাই সর্ট করা ডকুমেন্ট সমতুল্য। অ্যারের ক্রম অর্থবহ, তাই তা কখনো বদলানো হয় না।
ফরম্যাট করার পর একটি লম্বা সংখ্যা কেন বদলে গেল?
JavaScript সংখ্যাকে 64-বিট ফ্লোট হিসেবে সংরক্ষণ করে, যা পূর্ণসংখ্যাকে নির্ভুলভাবে শুধু 2^53 পর্যন্ত ধারণ করতে পারে। এর চেয়ে বড় ID পার্স করার সময় রাউন্ড হয়ে যায়; প্রতিটি অঙ্ক ঠিক রাখতে সেগুলো স্ট্রিং হিসেবে পাঠান।
পেস্ট না করে কি একটি JSON ফাইল ফরম্যাট করা যায়?
ফাইলটি যেকোনো টেক্সট এডিটরে খুলুন, সব সিলেক্ট করে এখানে পেস্ট করুন। কয়েক দশ মেগাবাইটের খুব বড় ফাইল টেক্সট এরিয়ায় রেন্ডার হওয়ার সময় ট্যাব ধীর করে দিতে পারে।