মূল বিষয়বস্তুতে যান
CuteJSON
↑↓ নেভিগেট Enter নির্বাচন Esc বন্ধ

How CuteJSON works, and why nothing you paste leaves your browser

প্রকাশিত 4 মিনিট পড়ুন Akash Kinkar Pandey দ্বারা

এই সাইটের প্রতিটি টুল আপনার ব্রাউজারে চলে। কোনো আপলোড নেই, কোনো অ্যাকাউন্ট নেই এবং কোনো সার্ভার নেই যা আপনার JSON দেখে, এবং এই পোস্টটি ব্যাখ্যা করে কীভাবে এটি কাজ করে, কীভাবে আপনি নিজে যাচাই করবেন বিশ্বাস করার পরিবরতে, এবং টুলগুলি ইচ্ছাকৃতভাবে কী করে না।

কী ঘটে যখন আপনি পেস্ট করেন

যখন আপনি একটি টুল পৃষ্ঠা খুলেন, আপনার ব্রাউজার একটি HTML পৃষ্ঠা এবং একটি ছোট JavaScript ফাইল ডাউনলোড করে। এটিই পুরো টুল। যখন আপনি একটি ডকুমেন্ট পেস্ট করেন এবং একটি বোতাম চাপেন, পার্সিং এবং প্রিন্টিং ট্যাবের ভিতরে ঘটে, এবং ফলাফল পৃষ্ঠায় ফিরিয়ে দেওয়া হয়। কোথাও কিছু পাঠানো হয় না, কারণ পাঠানোর জায়গা নেই: সাইটের টুল ডেটার জন্য কোনো ব্যাকএন্ড নেই।

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

আপনি নিজে ত্রিশ সেকেন্ডে যাচাই করুন

যেকোনো গোপনীয়তা দাবি যা আপনি যাচাই করতে পারেন না তা শুধু একটি পৃষ্ঠায় একটি বাক্য। এটি পরীক্ষা করতে অর্ধেক মিনিট লাগে:

  1. যেকোনো টুল খুলুন, উদাহরণস্বরূপ ফর্ম্যাটার।
  2. আপনার ব্রাউজার ডেভেলপার টুল খুলুন এবং নেটওয়ার্ক ট্যাবে যান।
  3. তালিকা পরিষ্কার করুন, কিছু JSON পেস্ট করুন এবং ফর্ম্যাট চাপুন।

তালিকায় কিছু নতুন দেখায় না, কারণ কোনো অনুরোধ করা হয় না। এটি তুলনা করুন একটি টুলের সাথে যা আপনি বোতাম চাপলে একটি এন্ডপয়েন্টে পোস্ট করে, আপনি সাথে সাথে একই প্যানেলে দেখবেন।

একটি ইচ্ছাকিত ব্যতিক্রম আছে, এবং এটি অন্য একটি পৃষ্ঠায়: যোগাযোগ ফর্ম আপনার টাইপ করা পাঠায়, কারণ আপনার ব্রাউজারে থাকা একটি বার্তা বার্তা নয়। বাকি সব স্থানীয় থাকে।

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

কেন টুলগুলি পার্স করার পরিবরতে টোকেন পড়ে

অধিকাংশ অনলাইন ফর্ম্যাটার অভ্যন্তরীণভাবে এরকম কিছু করে:

JSON.stringify(JSON.parse(input), null, 2)

এটি নিরাপদ মনে হয় এবং দুটি নির্দিষ্ট উপায়ে ডেটা ক্ষতিগ্রস্ত করে।

দীর্ঘ পূর্ণসংখ্যা নির্ভুলতা হারায়। JavaScript সংখ্যা ডাবল, তাই প্রায় ষোল অঙ্কের চেয়ে বড় একটি পূর্ণসংখ্যা ঠিকমতো ধরে রাখা যায় না। {"id": 12345678901234567890} এভাবে তৈরি একটি ফর্ম্যাটারে পেস্ট করুন এবং আপনি 12345678901234567000 ফিরে পান। কিছু সতর্ক করে না।

পূর্ণসংখ্যার মতো কীগুলি পুনর্বিন্যস্ত হয়। JavaScript অবজেক্ট পূর্ণসংখ্যার মতো কীগুলি সাংখ্যিকভাবে সাজায়, সবকিছুর আগে। তাই {"2": "রূপা", "1": "স্বর্ণ"} {"1": "স্বর্ণ", "2": "রূপা"} হিসাবে ফিরে আসে, যা গুরুত্বপূর্ণ যখন ক্রম অর্থবহ ছিল, এবং প্রায়ই কনফিগারেশন ফাইলে থাকে।

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

একই সিদ্ধান্ত সাইটের বাকি অংশে চলে। ভিউয়ার প্রতিটি কীর পাশে আপনি সত্যিই যেমন লিখেছেন সেই টেক্সট দেখায়। ডিফ দুটি কুড়ি অঙ্কের পূর্ণসংখ্যাকে সমান বলবে না শুধু কারণ এগুলি একই ডাবলে ভেঙে যায়। পয়েন্টার মূল্যায়নকারী সঠিক উৎস ফিরিয়ে দেয় যে মানটি সমাধান করেছে।

কেন ত্রুটি বার্তাগুলি এভাবে আছে

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

আপনি যদি তালিকা চান, সাধারণ JSON সিনট্যাক্স ত্রুটি পোস্টটি সবচেয়ে বেশি আসা নটি পরিদর্শন করে, প্রতিটির জন্য সংশোধন সহ।

সাইটটি কী করে না

কিছু স্ট্যান্ডার্ড এখানে আংশিকভাবে বাস্তবায়িত। JSONPath টেস্টার সেলেক্টর সমর্থন করে যেগুলি প্রকৃত কুয়েরি ব্যবহার করে এবং পৃষ্ঠায় তাদের তালিকা করে। ফাংশন এক্সটেনশন এবং RFC 9535-এর কয়েকটি অন্য প্রান্ত অনুপস্থিত, এবং একটি ব্যবহার করলে বৈশিষ্ট্যটির নাম একটি অস্পষ্ট ব্যর্থতার পরিবরতে বার্তা দেয়। JSON Pointer বিপরীত ক্ষেত্র: RFC 6901 চার পৃষ্ঠা, তাই সব বাস্তবায়িত।

মেরামত আপনার ডেটা পরিবর্তন করতে পারে। NaN, Infinity এবং undefined-এর JSON সমতুল্য নেই, তাই মেরামত টুল এগুলিকে null-এ রূপান্তরিত করে এবং পুনর্গঠন সংশোধন থেকে আলাদাভাবে সেই পরিবর্তনগুলি তালিকা করে। আউটপুটে বিশ্বাস করার পরিবরতে সেই তালিকাটি পড়ুন।

খুব বড় ডকুমেন্টগুলি উদ্দেশ্যমূলকভাবে ক্ষয়প্রাপ্ত হয়। প্রায় দুই লক্ষ অক্ষরের উপরে, সিনট্যাক্স রঙিন বন্ধ হয়ে যায় যাতে টাইপিং মসৃণ থাকে, এবং পৃষ্ঠাটি যখন ঘটে তখন তা বলে। ভিউয়ার শুধু যখন আপনি খুলেন তখন একটি শাখা আঁকে, এবং কয়েক হাজার মানের বেশি হলে এটি সব একসাথে প্রসারিত করতে অস্বীকার করে পরিবরতে এক মিনিটের জন্য ট্যাব হিমায়িত করে।

কোথা থেকে শুরু করবেন

আপনি যদি একটি ভাঙা ডকুমেন্ট নিয়ে এসে থাকেন, যাচাইকারী বলবে কী ভুল আছে এবং মেরামত টুল যান্ত্রিক অংশগুলি সংশোধন করবে। আপনি যদি একটি কার্যকর ডকুমেন্ট নিয়ে এসে থাকেন যা আপনি বোঝেন না, ভিউয়ার প্রবেশ করার সবচেয়ে দ্রুত উপায়। বাকি সব টুল পৃষ্ঠায় আছে।

সব পোস্টে ফিরুন