JSON Diff: JSON অবজেক্ট তুলনা করুন

দুটি JSON ডকুমেন্ট পেস্ট করে দেখুন ঠিক কী বদলেছে। প্রতিটি পার্থক্য $.users[2].email-এর মতো পাথসহ তালিকাভুক্ত হয়, আর ফরম্যাটিং বা কী-এর ক্রমের কারণে কখনো ভুল সতর্কতা আসে না।

ব্রাউজারেই চলেসাইন-আপ লাগে নাকিছুই আপলোড হয় না

কী-এর ক্রম সবসময় উপেক্ষা করা হয়।

JSON Diff কীভাবে ব্যবহার করবেন

  1. বাঁ দিকে মূল JSON আর ডান দিকে পরিবর্তিত JSON পেস্ট করুন, অথবা দুটি ফাইল খুলুন।
  2. সিনট্যাক্স ত্রুটি প্রতিটি বক্সের নিচে লাইন ও কলামসহ দেখানো হয়, যাতে দ্রুত ঠিক করতে পারেন।
  3. পরিবর্তিত পাথ টেবিল পড়ুন: প্রতিটি সারিতে দেখায় মানটি যোগ হয়েছে, সরানো হয়েছে নাকি বদলেছে, পুরনো ও নতুন মানসহ।
  4. তালিকাগুলো যখন সেট, যেমন ট্যাগ বা পারমিশন, তখন অ্যারের ক্রম উপেক্ষা করুন টিক দিন।
  5. প্রেক্ষাপটসহ পরিবর্তন দেখতে পাশাপাশি ভিউতে স্ক্রল করুন, অথবা পরিবর্তনের তালিকা JSON হিসেবে কপি করুন।

কেন স্ট্রাকচারাল JSON diff টেক্সট diff-এর চেয়ে ভালো

সাধারণ টেক্সট diff অক্ষর ও লাইন তুলনা করে, তাই একই ডেটাযুক্ত দুটি JSON ফাইলের একটি মিনিফাই করা, ভিন্নভাবে ইনডেন্ট করা বা ভিন্ন ক্রমে কী থাকলে সম্পূর্ণ আলাদা মনে হতে পারে। এই টুল আগে দুটি ডকুমেন্ট পার্স করে, তারপর ডেটা তুলনা করে: অবজেক্টগুলো ক্রম নির্বিশেষে কী ধরে ধরে তুলনা হয়, আর number, string, boolean ও null মান দিয়ে তুলনা হয়। শুধু আসল পরিবর্তনগুলোই রিপোর্ট করা হয়।

পরিবর্তন কীভাবে রিপোর্ট করা হয়

প্রতিটি পার্থক্য একটি JSONPath-ধাঁচের অবস্থান পায়, যেমন $.owner.email বা $.items[3].price, এবং তিনটি ধরনের একটি:

  • যোগ হয়েছে: কী বা অ্যারে এলিমেন্টটি শুধু পরিবর্তিত JSON-এ আছে।
  • সরানো হয়েছে: এটি শুধু মূল JSON-এ আছে।
  • পরিবর্তিত: দুটিতেই আছে কিন্তু মান আলাদা, টাইপ পরিবর্তনসহ, যেমন একটি string থেকে number হয়ে যাওয়া।

অ্যারেগুলো longest-common-subsequence অ্যালগরিদম দিয়ে সারিবদ্ধ করা হয়, তাই তালিকার শুরুতে একটি এলিমেন্ট ঢোকালে সেটি একটিমাত্র সংযোজন হিসেবে রিপোর্ট হয়, পরের সব এলিমেন্টকে পরিবর্তিত দেখানো হয় না।

অ্যারের ক্রম উপেক্ষা করা

অনেক API এমন তালিকা ফেরত দেয় যার ক্রমের কোনো অর্থ নেই, যেমন রোল, ট্যাগ বা ID। অ্যারের ক্রম উপেক্ষা করুন চালু থাকলে অ্যারেগুলো সংগ্রহ হিসেবে তুলনা হয়: অন্য পাশে সমান কোনো প্রতিরূপ না থাকলেই কেবল একটি এলিমেন্ট যোগ বা সরানো হিসেবে গণ্য হয়। তখন পাশাপাশি ভিউ অ্যারে এলিমেন্টগুলো সাজিয়ে নেয়, যাতে সমান তালিকাগুলো মিলে যায়।

সাধারণ ব্যবহার

স্টেজিং ও প্রোডাকশনের API রেসপন্স তুলনা করুন, মাইগ্রেশন কনফিগ ফাইলে কী বদলেছে দেখুন, দুটি package.json বা tsconfig ফাইলের পার্থক্য রিভিউ করুন এবং snapshot টেস্ট ডিবাগ করুন।

সচরাচর জিজ্ঞাসিত প্রশ্ন

JSON তুলনায় কী-এর ক্রম কি গুরুত্বপূর্ণ?
না। JSON অবজেক্ট ক্রমহীন, তাই {"a":1,"b":2} ও {"b":2,"a":1} সমান হিসেবে রিপোর্ট হয়। অ্যারের ক্রম ডিফল্টভাবে গুরুত্বপূর্ণ, কারণ অ্যারে ক্রমযুক্ত, তবে অ্যারের ক্রম উপেক্ষা করুন দিয়ে তা বন্ধ করতে পারেন।
আমার JSON কি সার্ভারে আপলোড হয়?
না। দুটি ডকুমেন্টই আপনার ব্রাউজারে পার্স ও তুলনা করা হয়। নেটওয়ার্কে কিছুই পাঠানো হয় না, তাই টোকেন বা গ্রাহকের ডেটাযুক্ত API রেসপন্সের জন্যও টুলটি নিরাপদ।
$.users[2].email-এর মতো পাথের মানে কী?
$ ডকুমেন্টের রুট, .users একটি কী, আর [2] একটি অ্যারের তৃতীয় এলিমেন্ট (ইনডেক্স 0 থেকে শুরু)। স্পেস বা বিশেষ অক্ষরযুক্ত কী বন্ধনীতে লেখা হয়, যেমন $["first name"]।
1 কি 1.0-এর সমান?
হ্যাঁ। দুটোই একই সংখ্যায় পার্স হয়, তাই পার্থক্য হিসেবে রিপোর্ট হয় না। একটি number ও একটি string, যেমন 1 ও "1", আলাদা এবং পরিবর্তিত হিসেবে রিপোর্ট হয়।
কমেন্ট বা শেষে বাড়তি কমাযুক্ত JSON কি তুলনা করা যায়?
স্ট্যান্ডার্ড JSON এগুলো অনুমোদন করে না, তাই এমন ইনপুট সঠিক লাইন ও কলামসহ চিহ্নিত হয়। কমেন্ট বা কমা সরিয়ে দিন, অথবা আগে JSON ফরম্যাটারে ডকুমেন্টটি পরিষ্কার করুন।

সম্পর্কিত টুল