পেস্ট করা JSON-এ RFC 9535 JSONPath কোয়েরি চালান এবং প্রতিটি মিল হাইলাইট করা দেখুন
আপনার ব্রাউজারে চলে। আপনি যা লেখেন তা কোথাও পাঠানো হয় না।JSONPath একটি ছোট এক্সপ্রেশন দিয়ে JSON থেকে মান বের করে। $.store.book[*].author সব লেখক দেয়, $..price যেকোনো গভীরতার সব দাম, আর $..book[[email protected] < 10] কেবল 10-এর কম দামের বই। এই টেস্টার 2024 সালের মান RFC 9535 অনুসরণ করে এবং ফরম্যাট করা JSON-এ প্রতিটি মিল হাইলাইট করে।
এই পৃষ্ঠাটি ইংরেজি মূল লেখা থেকে যন্ত্রের সাহায্যে অনুবাদ করা হয়েছে। এই অনুবাদটি এখনও কোনো মানুষ পর্যালোচনা করেননি, তাই ইংরেজি সংস্করণটিকেই নির্ভরযোগ্য ধরুন। ইংরেজি মূল লেখাটি পড়ুন
JSON প্যানে JSON পেস্ট করুন, অথবা একটি উদাহরণ দেখুন চাপুন।
JSONPath ঘরে একটি কোয়েরি লিখুন, অথবা উদাহরণ থেকে একটি বেছে নিন।
হাইলাইট ট্যাবে চিহ্নিত মিলগুলো দেখুন, অথবা প্রতিটি পাথ ও মানের জন্য ফলাফল খুলুন।
মিলগুলো JSON অ্যারে হিসেবে পেতে মান কপি করুন চাপুন, অথবা পাথ কপি করুন।
এই JSONPath টেস্টার আপনার পেস্ট করা JSON-এ একটি কোয়েরি চালায় এবং ফলাফল তিনভাবে দেখায়: মেলা মানের তালিকা, প্রতিটি মিলের নর্মালাইজড পাথ, আর ফরম্যাট করা ডকুমেন্টের ভেতরে মিলগুলোর হাইলাইট। লেখার সঙ্গে সঙ্গে ফলাফল হালনাগাদ হয়, তাই ধাপে ধাপে এক্সপ্রেশন গড়ে দেখা যায় কোথায় ভুল হচ্ছে।
ইঞ্জিনটি RFC 9535 বাস্তবায়ন করে, যা 2024 সালে IETF প্রকাশিত JSONPath মান। এটি রুট $, ডট ও বন্ধনী দিয়ে চাইল্ড অ্যাক্সেস, রিকার্সিভ ডিসেন্ট অপারেটর .., ওয়াইল্ডকার্ড, ঋণাত্মকসহ অ্যারে ইনডেক্স, [1:5:2] ও [::-1]-এর মতো স্লাইস, আর ==, !=, <, <=, >, >=, &&, || ও ! দিয়ে ফিল্টার এক্সপ্রেশন সমর্থন করে। পাঁচটি মানক ফাংশন আছে: length(), count(), value(), match() ও search(), যার শেষ দুটি I-Regexp রূপে রেগুলার এক্সপ্রেশন নেয়। যে কোয়েরি মানের টাইপের নিয়ম ভাঙে, যেমন একাধিক নোড ফেরত দিতে পারে এমন কোয়েরির তুলনা, তা কারণ জানিয়ে বাতিল করা হয়।
অনেক পুরোনো লাইব্রেরি, যেমন 2007 সালের মূল JSONPath ও Java-র Jayway, ছোটখাটো বিষয়ে মান থেকে আলাদা: কিছুতে ফিল্টারের চারপাশে বন্ধনী লাগে, যেমন [?(@.price < 10)], যা এখানে এখনো কাজ করে; কিছু স্ক্রিপ্ট এক্সপ্রেশন বা বাড়তি ফাংশন অনুমোদন করে, যা RFC 9535-এ নেই। কোনো লাইব্রেরির ডকুমেন্টেশনের কোয়েরি বাতিল হলে বার্তাটি সাধারণত পার্থক্যটির নাম বলে।
অবৈধ JSON প্রথম সমস্যার লাইন ও কলামসহ জানানো হয়। সংখ্যা JavaScript সংখ্যা হিসেবে পড়া হয়, তাই 2^53-এর বড় পূর্ণসংখ্যা নির্ভুলতা হারায়, আর পুনরাবৃত্ত কী তার শেষ মান রাখে।
যা এটি করে না: JMESPath বা jq সিনট্যাক্স, JSON সম্পাদনা, বা URL থেকে আনা। সবকিছু আপনার ব্রাউজারে চলে। সম্পর্কিত টুল: JSON Formatter, JSON Diff, JSON to TypeScript।
একটি ফিল্টার সিলেক্টর ব্যবহার করুন: $.items[[email protected] == 'active'] সেই আইটেমগুলো রাখে যাদের status হলো active। @ পালাক্রমে প্রতিটি আইটেম বোঝায়। && ও || দিয়ে শর্ত জুড়ুন, < ও > দিয়ে সংখ্যা তুলনা করুন, আর যেসব আইটেমে আদৌ email ফিল্ড আছে সেগুলো রাখতে কেবল [email protected] লিখুন।
একটি ডট বর্তমান নোডের একটি চাইল্ড নেয়, তাই $.store.book একবারে এক স্তর পড়ে। দুটি ডট প্রতিটি গভীরতায় খোঁজে, তাই $..price ডকুমেন্টের যেকোনো জায়গার, অ্যারের ভেতরেরও, প্রতিটি price ফিল্ড খুঁজে পায়। রিকার্সিভ ডিসেন্ট সুবিধাজনক, তবে বড় রেসপন্সে উদ্দেশ্যের চেয়ে বেশি মিলে যেতে পারে।
RFC 9535, যা IETF 2024 সালের ফেব্রুয়ারিতে প্রকাশ করেছে এবং যা JSONPath-এর প্রথম আনুষ্ঠানিক মান। পুরোনো লাইব্রেরির জন্য লেখা কোয়েরি সাধারণত কাজ করে, ?( ) দিয়ে ঘেরা ফিল্টারসহ, কিন্তু স্ক্রিপ্ট এক্সপ্রেশন ও লাইব্রেরি-নির্দিষ্ট ফাংশন মানের অংশ নয় এবং ব্যাখ্যাসহ বাতিল হয়।
ঋণাত্মক ইনডেক্স ব্যবহার করুন: $.items[-1] হলো শেষ এলিমেন্ট আর $.items[-2] তার আগেরটি। ঋণাত্মক শুরুসহ স্লাইসও কাজ করে, তাই $.items[-3:] শেষ তিনটি দেয়। শেষের বাইরের ইনডেক্স ত্রুটি না দিয়ে কেবল কিছুই ফেরত দেয় না।
নর্মালাইজড পাথ হলো একটি মিলের একমাত্র সঠিক অবস্থান, RFC 9535-এ নির্ধারিত নির্দিষ্ট রূপে লেখা, যেমন $['store']['book'][0]['title']। প্রতিটি ফলাফল তার নর্মালাইজড পাথ দেখায়, যা বাগ রিপোর্ট বা টেস্ট অ্যাসারশনে কোনো মান দেখাতে কাজে লাগে।
হ্যাঁ, match() ও search() দিয়ে। match(@.code, 'A[0-9]+')-এ পুরো স্ট্রিংটিকে প্যাটার্নে মিলতে হয়, আর search(@.name, 'smith') যেকোনো জায়গায় খুঁজে পায়। প্যাটার্নগুলো I-Regexp ব্যবহার করে, যা রেগুলার এক্সপ্রেশনের একটি বহনযোগ্য উপসেট, তাই \d-এর মতো শর্টকাট ও লুকঅ্যাহেড গ্রহণ করা হয় না।
এখনও আটকে আছেন? JSONPath টেস্টার সম্পর্কে প্রশ্ন করুন আর যিনি জানেন তিনিই উত্তর দিতে পারেন। কোনো অ্যাকাউন্ট লাগবে না।