JSON diff

দুটি JSON নথি পেস্ট করুন — পরিবর্তিত পাথ সাথে সাথে দেখায়, কোনো বাটন নেই, আপলোড নেই।

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

  1. পুরনো JSON "মূল JSON"-এ এবং নতুন JSON "পরিবর্তিত JSON"-এ পেস্ট করুন — টাইপ করার সাথে সাথে যোগ, বিয়োজিত বা পরিবর্তিত প্রতিটি পাথ দেখায়, কোনো বাটন লাগে না।
  2. কী অর্ডার, 1 vs 1.0, 1e0 vs 1 এবং \u00e9 vs é — এগুলো পার্থক্য নয়: তুলনা স্ট্রাকচারাল। ফরম্যাটিং বা কী অর্ডার পরিবর্তন রিভিউ করতে চাইলে টেক্সট diff টুল ব্যবহার করুন।
  3. "diff কপি করুন"-এ পূর্ণ তালিকা কপি করুন: প্রতিটি লাইনে +, - বা ~ এর পরে পাথ ও পূর্ণ মান, টিকেট বা ইমেইলের জন্য প্রস্তুত।

উদাহরণ

দুটি নথি

【মূল】
{"order":"A-2026-001","customer":{"name":"রফিক","city":"ঢাকা"},"total":1299.5,"paid":false}

【পরিবর্তিত】
{"order":"A-2026-001","customer":{"name":"রফিক","city":"চট্টগ্রাম"},"total":1399.0,"paid":true,"coupon":"WELCOME10"}

পার্থক্য

+ $.coupon "WELCOME10"
~ $.customer.city "ঢাকা" → "চট্টগ্রাম"
~ $.total 1299.5 → 1399.0
~ $.paid false → true
(+1 ~3 −0)

【মূল】/【পরিবর্তিত】 লাইনগুলো উদাহরণ শিরোনাম; বাস্তবে দুটি নথি দুটি ইনপুট বক্সে যায়। শুধু প্রকৃত মান পরিবর্তন তালিকাভুক্ত: অপরিবর্তিত অর্ডার নম্বর ও কাস্টমার নাম দেখানো হয় না, কী অর্ডার কখনো পার্থক্য নয়।

নিয়ম, সীমাবদ্ধতা ও পরিচিত সমস্যা

  • এটি স্ট্রাকচারাল diff, টেক্সট diff নয়: অবজেক্ট কী অর্ডার উপেক্ষিত; 1, 1.0 ও 1e0 একই সংখ্যা; "\u00e9" ও "é" একই স্ট্রিং। ফরম্যাটিং পরিবর্তন গুরুত্বপূর্ণ হলে টেক্সট diff টুল ব্যবহার করুন।
  • সংখ্যা হুবহু ডেসিমাল হিসেবে তুলনা হয়, JavaScript Number দিয়ে নয়: 9007199254740993 সঠিক থাকে এবং 1e400 Infinity হয় না। তালিকায় সংখ্যা আপনার লেখা হুবহু দেখানো হয়।
  • স্ট্রিং ডিকোড করা মান দিয়ে তুলনা হয় ও স্ট্যান্ডার্ড JSON ফর্মে দেখায়; ডুপ্লিকেট কী-তে শেষ মান থাকে, JSON.parse-এর মতো, এবং কতগুলো ডুপ্লিকেট পেয়েছে তা ওয়ার্নিং-এ বলে।
  • অ্যারে অর্ডার্ড: ইনসার্শন ও ডিলিশন অ্যালাইন হয়, তাই শুরুতে একটি আইটেম যোগ করলে একটি "+" লাইন, পরের সব আইটেম পরিবর্তন নয়। মুভ রিপোর্ট হয় একটি বিয়োগ + একটি যোগ, এবং "অ্যারে অর্ডার উপেক্ষা" অপশন নেই।
  • পুরো সাবট্রি যোগ বা বিয়োগ হলে একটি পাথ দেখায়। খুব বড় মান স্ক্রিনে "অবজেক্ট · N কী" বা "অ্যারে · N আইটেম" হিসেবে দেখায়, কিন্তু "diff কপি করুন"-এ সবসময় পূর্ণ মান থাকে।
  • "diff কপি করুন" একটি প্লেইন-টেক্সট পরিবর্তন তালিকা দেয় (+ / - / ~, পাথ, পূর্ণ মান), JSON Patch নয়। অ্যারে ইনসার্শন/ডিলিশনে পরের ইনডেক্স শিফট হয়, তাই সরাসরি JSON Patch প্রয়োগ করা যাবে না।
  • পাথ $.a.b[0] ফরম্যাটে। বিয়োজিত আইটেম পুরনো ইনডেক্স দেখায়; যোগ ও পরিবর্তিত আইটেম নতুন নথির ইনডেক্স দেখায়।
  • সীমা: 200,000 ক্যারেক্টারের বেশি মিলিয়ে হলে টাইপ থামানোর প্রায় 0.6 সেকেন্ড পরে আপডেট; একটি নথি 1,000,000 ক্যারেক্টারের বেশি বা নেস্টিং 256 লেভেলের বেশি হলে এরর দেখায়, কখনো ট্রাংকেট করে না। অ্যালাইনমেন্ট লিমিটের বেশি অ্যারে ইনডেক্স অনুযায়ী তুলনা হয় ও নোটে জানায়; সর্বোচ্চ 400 পরিবর্তন লাইন রেন্ডার হয়, কিন্তু কপি করলে সবসময় পূর্ণ তালিকা পাবেন।
  • কোনো ফাইল আপলোড নেই, URL লোডিং নেই, JSON Schema বা JSONPath কোয়েরি নেই, হিস্ট্রি নেই, শেয়ার লিংক নেই। সবকিছু আপনার ব্রাউজারে: কিছুই আপলোড বা সংরক্ষণ হয় না।
  • চীনা, জাপানি ও কোরিয়ান পেজে "ফুল-উইথ পানচুয়েশন" ডিফল্টভাবে চালু: স্ট্রিংয়ের বাইরের পানচুয়েশন ASCII-তে ভাঁজ হয়, স্ট্রিংয়ের ভেতরের হুবহু থাকে।

দুটি নথি তুলনা করার পরে সাধারণত যা প্রয়োজন হয়।