টুল ব্যবহার FAQ: ডেটা, ফাইল ও এক্সপোর্ট
সংক্ষেপে: ডেটা আপলোড হয় কি না, কত বড় ফাইল চলে, কিছু লোকালি সংরক্ষিত হয় কি না, অক্ষর কেন এস্কেপ হয়: একটি অনলাইন JSON টুলের প্রকৃত সীমানা ব্যাখ্যা করা দশটি প্রশ্ন।

মূল কথা: পার্সিং, ফরম্যাটিং, ডিফিং ও কোয়েরি — সবই আপনার ব্রাউজারে চলে আর অফলাইনেও কাজ করে; সংবেদনশীল ডেটা সামলানোর পর localStorage ইতিহাস মুছে দিন; আর ১০ MB-এর উপরে কমান্ড-লাইন স্ট্রিমিং টুলে যান, ফাইল ব্রাউজারে পেস্ট না করে।
সংবেদনশীল পেললোড অনলাইন টুলে পেস্ট করার আগে জানুন তা কোথায় যায়। এই নিবন্ধে কেবল টুলের রানটাইম আচরণ, সিনট্যাক্স নয়।
১. ডেটা ও গোপনীয়তা
অনলাইন JSON ফরম্যাটার কি আমার ডেটা সার্ভারে আপলোড করে?
না। পার্সিং, ফরম্যাটিং, মিনিফাইং, ডিফিং ও কোয়েরি — সব ব্রাউজারে ঘটে, আর পেজ আপনি যা পেস্ট করেন তা কখনো অ্যাপ্লিকেশন সার্ভারে পাঠায় না।
অনলাইন টুল ডেটা আপলোড করে কি না জানতে গোপনীয়তা বিবৃতি পড়ার দরকার নেই; ব্রাউজারের নেটওয়ার্ক প্যানেলই যথেষ্ট:
- ডেভেলপার টুল খুলুন, Network প্যানেলে যান, আর লগ সংরক্ষণ চালু করুন;
- কিছু JSON পেস্ট করে "Format" চাপুন;
- নতুন XHR বা fetch রিকোয়েস্ট আসে কি না, আর তার বডিতে আপনার কন্টেন্ট আছে কি না দেখুন।
সত্যিকার লোকাল টুলে এই ধাপে কেবল স্ট্যাটিক অ্যাসেট রিকোয়েস্ট দেখায়। উল্টো, একটি ফরম্যাট ক্রিয়াতেই POST /api/format
আসে যার বডি আপনার মূল টেক্সট, তাহলে পেজ যা-ই দাবি করুক ডেটা ইতিমধ্যে ব্রাউজার ছেড়ে গেছে।
এই সাইটের প্রতিটি টুল বিশুদ্ধ ফ্রন্টএন্ড বাস্তবায়ন, আর বিল্ড আউটপুটে কোনো সার্ভার API নেই। অফলাইন হয়ে গেলে ক্যাশে লাগা রিফ্রেশ তবু কাজ করে, যা "সম্পূর্ণ লোকাল" কি না বোঝার সবচেয়ে সরল পথও।
অফলাইনে ব্যবহার করা যায়?
হ্যাঁ, শর্ত হলো পেজ একবার লোড হয়েছে।
প্রথম ভিজিটে সাইটের অ্যাসেট ব্রাউজার ক্যাশে নামে, তাই পরে নেটওয়ার্ক না থাকলেও ফরম্যাটিং, মিনিফাইং, JSON5 রূপান্তর ও JSONPath কোয়েরি কাজ করে। কেবল নেটওয়ার্ক-নির্ভর বৈশিষ্ট্য ব্যর্থ হয়, যেমন নতুন সংস্করণ চেক বা ডেস্কটপ ইনস্টলার ডাউনলোড।
অফলাইন পরীক্ষাও "ডেটা কখনো বের হয় না" যাচাইয়ের ভালো পথ: নেটওয়ার্ক বিচ্ছিন্ন করার সঙ্গে সঙ্গে সব ভাঙলে প্রতিটি ক্রিয়া সার্ভারের সঙ্গে কথা বলছিল।
কোনো ডেটা কি লোকালি সংরক্ষিত? কীভাবে মুছব?
হ্যাঁ, কিন্তু কেবল চলতি ব্রাউজারের localStorage-এ, আর কেবল ইতিহাস ও UI সেটিং।
- ইতিহাস: সর্বশেষ ১০০টি প্রসেস করা এন্ট্রি, উল্টো কালানুক্রমে, আগে পেস্ট করা ডেটা মনে করাতে;
- UI সেটিং: থিম, ভাষা, ইনডেন্টেশন পছন্দ ইত্যাদি;
- সংরক্ষিত নয়: ফাইল নিজেই, আপলোড রেকর্ড, বা পরিচয় বহনকারী কিছু।
মুছার তিন পথ, সংকীর্ণ থেকে বিস্তৃত:
| পদ্ধতি | পরিধি | কখন ব্যবহার করবেন |
|---|---|---|
| ইতিহাস পেজে "Clear history" | কেবল ইতিহাস মুছে, সেটিং রাখে | সংবেদনশীল ডেটা সামলানোর পর |
ডেভেলপার টুলে localStorage.clear() |
এই সাইটের সব লোকাল ডেটা | অস্বাভাবিক সেটিং নির্ণয় |
| এই সাইটের ব্রাউজার "Clear browsing data" | কুকি, ক্যাশে ও স্টোরেজ একসঙ্গে | ভাগ করা কম্পিউটার ব্যবহারের আগে |
ভাগ করা কম্পিউটারে প্রোডাকশন ডেটা সামলালে ট্যাব বন্ধ না করে শেষে ইতিহাস মুছুন — ট্যাব বন্ধে localStorage অদৃশ্য হয় না।
অক্ষর কেন \u4e2d\u6587 হয়ে গেল?
কারণ "escape" বৈশিষ্ট্য নন-ASCII অক্ষরকে ইউনিকোড এস্কেপ সিকোয়েন্সে বদলায়। এটি সচেতন আচরণ, mojibake নয়।
\u4e2d হলো অক্ষর 中 (U+4E2D)-এর কোড পয়েন্ট। JSON-এ দুই রূপ সেমান্টিকভাবে অভিন্ন আর একই স্ট্রিংয়ে পার্স হয়:
{
"escaped": "\u4e2d\u6587",
"plain": "中文"
}
এস্কেপিং কখন দরকার? JSON-কে শুধু ASCII গ্রহণকারী পুরোনো সিস্টেমে এম্বেড করা, HTTP হেডারে লেখা, বা অন্য স্ট্রিংয়ের ভেতরে নেস্ট করা। কখন দরকার নেই? বেশিরভাগ API ট্রান্সপোর্ট ও ফাইল স্টোরেজে লাগে না; অক্ষর সোজা UTF-8 হিসেবে রাখলে বাইট বাঁচে — একটি চীনা অক্ষর ৩ বাইট, এস্কেপ করলে ৬ বাইট।
অক্ষর \u4e2d-এ বদলালে আগে দেখুন "Escape" বাটন চাপেছেন কি না, এনকোডিং ভেঙেছে সন্দেহ না করে।
২. ফাইল ও আকার
কত ফাইল আকার সমর্থিত?
ব্রাউজার পক্ষে কঠোর সীমা নেই; আসল সীমা তিন জায়গা থেকে আসে:
| ধাপ | মোটামুটি bottleneck | লক্ষণ |
|---|---|---|
| টেক্সট বক্সে পেস্ট | ১–৫ MB | পেস্টের পর ইনপুট ধীর, কার্সরে দেরি |
JSON.parse |
৫০–১০০ MB | মেইন থ্রেড সেকেন্ডের জন্য ব্লক, পেজ অপ্রতিক্রিয়াশীল |
| ট্রি রেন্ডারিং | ১০k–২০k নোড | এক্সপ্যান্ডে ফ্রেম ড্রপ, স্ক্রলে জমে যায় |
অর্থাৎ কয়েক ডজন MB ফাইল "পার্স করা যায়" কিন্তু "ব্যবহার করা যায় না"। সত্যিই এমন ডেটা প্রসেস করতে হলে আরও শক্তিশালী অনলাইন টুল খুঁজবেন না, বরং স্ট্রিমিংয়ে যান (পারফরম্যান্স ও নিরাপত্তা FAQ দেখুন)।
হাতের নিয়ম: ২ MB-এর নিচে অনলাইন টুল মসৃণ; ২–১০ MB মানে এক-দুই দেরি মেনে নেওয়া; ১০ MB-এর উপরে লোকাল স্ক্রিপ্ট পছন্দনীয়।
পেস্ট করার পর ব্রাউজার জমে যায়। এখন কী?
আগে রিফ্রেশ করবেন না — রিফ্রেশে কন্টেন্ট হারায় আর আবার পেস্ট করতে হয়। এই ক্রমে উদ্ধার করুন:
- ১০–৩০ সেকেন্ড অপেক্ষা করুন। বেশিরভাগ ক্ষেত্রে মেইন থ্রেড পার্স বা রেন্ডার করছে আর নিজেই সেরে যাবে;
- সেরে উঠলেই "Minify" ভিউতে যান বা ট্রি কোলাপ্স করে DOM নোড কমান;
- কন্টেন্ট লোকাল ফাইলে কপি করে কমান্ড লাইনে যান:
# Look at the structure of the first 100 lines only, to avoid loading everything
head -c 200000 data.json | jq . | head -n 100
# Count entries with a streaming tool, without loading them into memory
jq -c '.items[]' data.json | wc -l
পরেরবার বড় ফাইল পেলে আগে wc -c চালিয়ে বাইট সংখ্যা দেখুন, তারপর ব্রাউজারে পেস্ট করবেন কি না ঠিক করুন।
পেস্ট করার পর ফরম্যাটিং অপরিবর্তিত কেন?
তিন সাধারণ কারণ, কম্পাঙ্কের ক্রমে:
- ইনপুট আগেই মিনিফাইড আর সিনট্যাক্স এরর নেই: ফরম্যাটিং কেবল ইনডেন্টেশন বদলায়, তাই মূল সত্যিই দুই লাইন হলে পরেও দুই লাইন থাকবে — স্ট্রিংয়ের ভেতরের নিউলাইন প্রসারিত হয় না;
- কন্টেন্ট JSON নয়: যেমন আপনি JavaScript অবজেক্ট লিটেরাল পেস্ট করেছেন (কোট ছাড়া কি, সিঙ্গেল কোট), আর পার্সার ফরম্যাট না করে এরর দেয়;
- ভুল বাটনে চাপ দিয়েছেন: মিনিফাই ও ফরম্যাট বিপরীত দিকে যায়, আর মিনিফাই সব ইনডেন্টেশন সরায়।
কীভাবে বুঝবেন: আউটপুট এলাকার ডান-উপরে অক্ষর-সংখ্যা দেখুন। ফরম্যাটিংয়ের পর সংখ্যা বাড়া উচিত (বাড়তি ইনডেন্টেশন ও নিউলাইন); কমেছে মানে আপনি মিনিফাই চালিয়েছেন।
৩. ইনপুট ও আউটপুট
ফল কীভাবে ফাইলে এক্সপোর্ট করব?
তিন পথ, নির্ভরযোগ্যতার ক্রমে:
| পদ্ধতি | ক্রিয়া | কখন ব্যবহার করবেন |
|---|---|---|
| ডাউনলোড বাটন | "Download" চাপলে .json ফাইল তৈরি হয় |
সংরক্ষণ করতে হবে এমন বড় ফল |
| ক্লিপবোর্ডে কপি | "Copy" চাপুন | কোডে সোজা ফিরিয়ে পেস্ট করবেন এমন ছোট ফল |
| হাতে select-all কপি | আউটপুট এলাকা বেছে Ctrl/Cmd + C চাপুন |
কপি বাটন ব্যর্থ হলে ফলব্যাক |
ডাউনলোড করা ফাইল ডিফল্টে BOM ছাড়া UTF-8। এটি গুরুত্বপূর্ণ: BOM-যুক্ত JSON অনেক পার্সারে সরাসরি ভাঙে (সিনট্যাক্স ও ফরম্যাট FAQ-এ BOM অংশ দেখুন)।
JSON5 ও JSONC কি সমর্থিত?
হ্যাঁ, কিন্তু "পার্সিং" ও "আউটপুট" আলাদা করুন।
- ইনপুট দিকে আপনি JSON5 (সিঙ্গেল কোট, আনকোয়োটেড কি, কমেন্ট, ট্রেইলিং কমা, হেক্সাডেসিমেল সংখ্যা) বা JSONC (কেবল কমেন্ট) পেস্ট করতে পারেন;
- আউটপুট দিকে স্ট্যান্ডার্ড JSON-এ রূপান্তর করতে পারেন, বা হাতে সম্পাদনা সহজ করতে স্ট্যান্ডার্ড JSON-কে আবার JSON5-এ বদলাতে পারেন।
সিস্টেম সীমানা পার হলে সবসময় স্ট্যান্ডার্ড JSON দিন। JSON5 মানুষের লেখা কনফিগারেশনের ডায়ালেক্ট; Content-Type: application/json-এ
কমেন্ট বা ট্রেইলিং কমাযুক্ত রিকোয়েস্ট বডি সাধারণত সার্ভার প্রত্যাখ্যান করে।
৪. পরিবেশ ও সামঞ্জস্য
ফোনে চলে?
হ্যাঁ। ইন্টারফেস এক কলামে রিফ্লো হয়, আর ফরম্যাটিং, মিনিফাইং, ডিফিং ও JSONPath — সবই থাকে।
কিন্তু ফোনে বড় ফাইল সামলানো দুর্বল অভিজ্ঞতা: সফট কিবোর্ড কন্টেন্ট ঢাকে, টেক্সট বেছে নেওয়া কঠিন, আর অ্যাপ বদলালে ব্রাউজার পেজ ফেলে দিতে পারে, কন্টেন্ট হারায়। জরুরি অবস্থায় গ্রহণযোগ্য, কিন্তু দৈনন্দিন কাজ ডেস্কটপে করুন।
Chrome-এ একই ফাইল খোলে কিন্তু Safari-তে এরর দেয় কেন?
সাধারণত ব্রাউজার পার্থক্য নয়, এনকোডিং পার্থক্য। এই ক্রমে ডিবাগ করুন:
- BOM: Windows Notepad-এ সংরক্ষিত UTF-8-এ BOM থাকে, যা কিছু পার্সার সহন করে না;
- লাইন এন্ডিং: CRLF ও LF মেশানো JSON নিজেকে প্রভাবিত করে না, কিন্তু রিপোর্ট করা এরর লাইন নম্বর সরে যায়, তাই "এরর অবস্থান ভুল" মনে হয়;
- অদৃশ্য অক্ষর: ওয়েব পেজ থেকে কপি করা টেক্সটে zero-width space (U+200B) থাকতে পারে, চোখে অদৃশ্য অথচ কি মেলানো ভাঙতে যথেষ্ট।
এক কমান্ডেই ধরা যায়:
# Look at the hex of the first 16 bytes; a leading EF BB BF means a BOM is present
head -c 16 data.json | xxd
৫. দ্রুত রেফারেন্স
| প্রশ্ন | উপসংহার |
|---|---|
| ডেটা আপলোড করে কি | না, সব ব্রাউজারে লোকালি প্রসেস হয়, আর অফলাইনেও চলে |
| ডেটা কোথায় সংরক্ষিত | localStorage, কেবল ইতিহাস ও সেটিং, কখনো ফাইল নয় |
| কত ফাইল আকার যুক্তিসঙ্গত | ২ MB-এর নিচে মসৃণ; ১০ MB-এর উপরে কমান্ড লাইনে যান |
অক্ষর \u হয়ে গেছে |
আপনি escape চেপেছেন; সমতুল্য কিন্তু ভারী, আর সাধারণত অপ্রয়োজনীয় |
| জমে গেছে, এখন কী | সেরে ওঠার অপেক্ষা → ট্রি কোলাপ্স → কপি করে jq ব্যবহার |
| এক্সপোর্ট BOM-মুক্ত কি | হ্যাঁ, BOM ছাড়া UTF-8 |
| কমেন্ট সমর্থিত কি | ইনপুট দিকে JSON5/JSONC; আউটপুট স্ট্যান্ডার্ড JSON |