টুল ব্যবহার FAQ: ডেটা, ফাইল ও এক্সপোর্ট
ডেটা আপলোড হয় কি না, কত বড় ফাইল চলে, কিছু লোকালি সংরক্ষিত হয় কি না, অক্ষর কেন এস্কেপ হয়: একটি অনলাইন JSON টুলের প্রকৃত সীমানা ব্যাখ্যা করা দশটি প্রশ্ন।
এই সাইটের টুল ও JSON স্পেসিফিকেশন নিয়ে সবচেয়ে বেশি জিজ্ঞাসিত প্রশ্নগুলো পরিস্থিতি অনুযায়ী সাজানো, আর প্রতিটি উত্তর সরাসরি কাজে লাগানো যায় — অস্পষ্ট উপসংহার নয়।
25টি নিবন্ধডেটা আপলোড হয় কি না, কত বড় ফাইল চলে, কিছু লোকালি সংরক্ষিত হয় কি না, অক্ষর কেন এস্কেপ হয়: একটি অনলাইন JSON টুলের প্রকৃত সীমানা ব্যাখ্যা করা দশটি প্রশ্ন।
কমেন্ট অনুমোদিত কি না, ট্রেইলিং কমা কেন এরর, কি কোটে মোড়াতে হয় কি না, 9007199254740993 কেন বদলায় — বারোটি উপসংহার, প্রতিটি RFC 8259-এর বিরুদ্ধে যাচাইকৃত।
পাথ কোয়েরিতে JSONPath নাকি Pointer, Patch বনাম Merge Patch কীভাবে বাছবেন, Schema আসলে কী আটকায়, আর draft সংস্করণ কীভাবে বাছবেন — সব একসঙ্গে ব্যাখ্যা।
কয়েক ডজন MB JSON ফাইল কেন খোলে না, গভীর ক্লোন কত দামি, __proto__ দূষণ কীভাবে ঠেকাবেন, আর XSS কোথা দিয়ে ঢোকে — লক্ষণ অনুযায়ী সাজানো দশটি প্রাথমিক উপসংহার।
নামকরণ শৈলী, সময়ের ফরম্যাট, null সেমান্টিক্স, এনাম আকৃতি, কনফিগ ফরম্যাট, ফিক্সচার সংগঠন ও মার্জ কনফ্লিক্ট — দলে সত্যিই যে বারোটি সমঝোতা নিয়ে তর্ক হয়।
RFC 8259-এ কোনো কমেন্ট সিনট্যাক্স নেই, তাই `//` ও ব্লক কমেন্ট JSON.parse-কে throw করায়। JSON5 বা JSONC, `_comment` ফিল্ড, Schema description, বা YAML ব্যবহার করুন।
ট্রেইলিং কমা JavaScript অবজেক্ট লিটেরালে বৈধ আর JSON-এ মারাত্মক। সঠিক এরর, যে RFC 8259 ব্যাকরণ এর কারণ, আর তিনটি সমাধান যা সত্যিই টেকে।
UTF-8 BOM তিনটি অদৃশ্য বাইট, তাই `JSON.parse` প্রথম অক্ষরেই ব্যর্থ হয় আর লাইন ১ কলাম ১ রিপোর্ট করে, ফলে ফাইল খালি বা কাটা মনে হয়।
JSON-এ কেবল দশমিক সংখ্যা লিটেরাল। `JSON.stringify` সতর্কতা ছাড়াই NaN ও Infinity-কে null করে, এজন্যই "সংখ্যা ফিল্ড মাঝেমধ্যে null" প্রোডাকশনে বারবার দেখা যায়।
2^53-1-এর বেশি ইন্টিজার `JSON.parse`-এ নির্ভুলতা হারায়। Snowflake ID, অর্ডার নম্বর ও ডেটাবেস bigint — সবই এতে পড়ে, তাই শুরু থেকে শেষ পর্যন্ত স্ট্রিং হিসেবে রাখুন।
\u4e2d\u6587 এস্কেপ বৈধ ইউনিকোড, এনকোডিং ব্যর্থতা নয়। আসল mojibake আলাদা দেখায়, আর দুইটা আলাদা করা ঠিক করে দেয় আসলে কী ঠিক করতে হবে।
ক্রমে কঠোর সুপারসেট: JSONC কমেন্ট যোগ করে; JSON5 সিঙ্গেল কোট, আনকোয়োটেড কি, ট্রেইলিং কমা ও হেক্স সংখ্যা যোগ করে। ভুল বাছাই API ভাঙে, আপনার এডিটর নয়।
JSON ব্রেস দিয়ে আর YAML ইনডেন্টেশন দিয়ে সীমানা টানে: মেশিনে JSON, কনফিগ সম্পাদনা করা মানুষে YAML। কমেন্ট, অ্যাঙ্কর ও বহু-ডকুমেন্ট কাঠামো টেকে না।
JSON Pointer হলো কি হিসেবে রাখা যায় এমন অনন্য ঠিকানা; JSONPath একটি কোয়েরি ভাষা। ভুলটি ব্যবহারে কনফিগ হালনাগাদ ভাঙে বা ভাঙা JSONPath নতুন করে বানাতে হয়।
Schema কাঠামো ও টাইপ নিয়ন্ত্রণ করে, ব্যবসায়িক অর্থ নয়। অনুপস্থিত ফিল্ড, ভুল টাইপ ও রেঞ্জের বাইরের এনাম আটকায়, অথচ "টাকা শূন্যের বেশি" ধরনের নিয়ম কোডে থাকে।
2020-12 বর্তমান আর `$defs`, `prefixItems`, `unevaluatedProperties` যোগ করে, কিন্তু অনেক টুল এখনও কেবল draft-07 বোঝে। আপনার পুরো টুলচেইন কী সমর্থন করে তা দিয়ে বাছুন।
json-schema-to-typescript ও quicktype এক কমান্ডে .d.ts দেয়, কিন্তু তা খসড়া: optionality, union, additionalProperties ও তারিখে মানুষের হাত দরকার।
ভুল ক্রমে অপ্টিমাইজ করলে প্রতিটি লাইব্রেরি বদল বৃথা। নেটওয়ার্ক, পার্স ও রেন্ডার আলাদা মাপুন, তারপর পার্স কমান, পেললোড ছোট করুন ও স্ট্রিম করুন।
`JSON.parse` `__proto__`-কে সাধারণ কি ধরে; ক্ষতি হয় রিকার্সিভ মার্জে যা `Object.prototype`-এ লেখে, ফলে প্রতিটি অবজেক্ট আক্রমণকারীর প্রপার্টি উত্তরাধিকার পায়।
JSON নিজে কখনো চলে না। XSS হয় যখন আপনি এটিকে HTML ধরেন — সার্ভার-পক্ষ স্ট্রিং জোড়া লাগানো, ফ্রন্টএন্ড `innerHTML`, বা JSON সরাসরি স্ক্রিপ্ট ট্যাগে ইনলাইন করা।
জানতে গোপনীয়তা নীতি পড়ার দরকার নেই। নেটওয়ার্ক প্যানেল খুলুন, পেজ অফলাইনে চালান, আর কিছু টেকে গেল কি না দেখতে রিফ্রেশ করুন। দুই মিনিট, তিন যাচাই, বিশ্বাসের দরকার নেই।
নির্দিষ্ট সীমা নেই; বাধা আপনার ট্যাবের মেমরি বাজেট। ২০MB ফাইল সাধারণত পার্সের পর ৬০–১০০MB হয়, আর হাইলাইট করা DOM তা আবার দ্বিগুণ করতে পারে।
খালি অবজেক্ট মেটাডেটা দরকার হওয়া পর্যন্ত পরিচ্ছন্ন; পূর্ণ এনভেলপ নিরাপদ কিন্তু ভারী। বেশিরভাগ প্রকল্পে ফলাফলে HTTP স্টেটাস আর ডেটায় স্থিতিশীল এনভেলপ ব্যবহার করুন।
Epoch সংখ্যা আর ISO স্ট্রিং — প্রতিটির সমঝোতা আছে, কিন্তু সেগুলো মেশানোই আসল ক্ষতি করে। অফসেটসহ ISO 8601 ব্যবহার করুন, UTC-তে সংরক্ষণ করুন, ব্যবহারকারীর টাইম জোনে দেখান।
`null` বলে ফিল্ড আছে কিন্তু মান নেই; বাদ দেওয়া বলে ফিল্ডটাই নেই। PATCH বডি, কনফিগ মার্জ ও ফর্ম প্রিফিল — এখানেই পার্থক্যটা কামড়ায়।