JSON Pointer, RFC 6901, একটি ছোট স্পেসিফিকেশন: চার পৃষ্ঠ, একটি সিনট্যাক্স,
একটি পথের মানে নিয়ে কোনো অস্পষ্টতা নেই। এটি সেখানে দেখা যায় যেখানে
কিছু একটার JSON ডকুমেন্টের ভেতরে একটি সুনির্দিষ্ট অবস্থানকে
রেফারেন্স করার প্রয়োজন হয় নিজের পথ ভাষা আবিষ্কার না করে, সবচেয়ে
প্রায় JSON Patch এবং JSON Schema-এর $ref কীওয়ার্ডের ভেতরে।
সিনট্যাক্স, সংক্ষেপে
একটি পয়েন্টার / দ্বারা আলাদা করা টোকেনের একটি ক্রম। /user/name
মানে user অবজেক্টের ভেতরে name কী। /items/0 মানে items
অ্যারের প্রথম উপাদান। ফাঁকা স্ট্রিং, একটি পয়েন্টার কোনো টোকেন
ছাড়াই, মানে সম্পূর্ণ ডকুমেন্ট। দুটি অক্ষরের একটি টোকেনের ভেতরে
এস্কেপের প্রয়োজন: ~1 একটি শাব্দিক / প্রতিনিধিত্ব করে, এবং
~0 একটি শাব্দিক ~ প্রতিনিধিত্ব করে, সবসময় সেই ক্রমে পড়া হয়
যাতে ~01 /-এর বদলে ~1 মানে।
JSON Pointer মূল্যায়নকারী ব্যবহার করা
একটি ডকুমেন্ট পেস্ট করুন, একটি পয়েন্টার টাইপ করুন, এবং Resolve চাপুন। দেওয়া
{"a/b":{"c~d":42},"list":["x","y"]}
পয়েন্টার /a~1b/c~0d এমন একটি কীর মধ্য দিয়ে সমাধান হয় যাতে
আক্ষরিকভাবে একটি স্ল্যাশ এবং একটি কী যাতে আক্ষরিকভাবে একটি
টিল্ড আছে, 42 ফিরিয়ে দেয়। এস্কেপের থাকার সম্পূর্ণ কারণ এটি:
এদের ছাড়া, সেপারেটর অক্ষর ধারণকারী কীকে সম্বোধন করা অসম্ভব
হত।
একটি ব্যর্থ লুকআপ আপনাকে কী বলে
অধিকাংশ সরঞ্জাম একটি ব্যর্থ পয়েন্টারকে একটি সাধারণ “পাওয়া যায়নি”
হিসাবে রিপোর্ট করে, যা একটি ডকুমেন্টে ঠিক করার জন্য যথেষ্ট নয়
যাতে কয়েকটি বেশি কী আছে। এটি আপনাকে বলে পয়েন্টার কোথায় পৌঁছেছে,
সেখানে কী পেয়েছে, এবং অবজেক্টের কাছে প্রকৃতভাবে কোন কী আছে।
একই ডকুমেন্টের বিরুদ্ধে /a~1b/nope চাইলে ফিরে আসে:
অবজেক্টে এখানে কোনো “nope” কী নেই, এতে c~d আছে। /a?1b পর্যন্ত সমাধান করা হয়েছে
এটি টাইপো তাৎক্ষণিকভাবে দেখার জন্য যথেষ্ট, কী ভুল হয়েছে তা অনুমান করার জন্য সম্পূর্ণ ডকুমেন্ট পুনরায় পড়ার বদলে।
ড্যাশ, এবং কেন এটি সমাধান হয় না
JSON Patch-এর ভেতরে, একটি অ্যারের দিকে পয়েন্টারের শেষ টোকেন
হিসাবে ড্যাশ মানে “শেষ উপাদানের পরের অবস্থান,” যুক্ত করার জন্য
ব্যবহৃত। একা, একটি ডকুমেন্টের বিরুদ্ধে /items/- সমাধান করলে
কোনো বিদ্যমান মানের নাম দেয় না, কারণ এখনো সেখানে নির্দেশ
করার কিছু নেই। মূল্যায়নকারী এই পার্থক্য ব্যাখ্যা করে একটি
সাধারণ পার্স ত্রুটি হিসাবে আচরণ করার বদলে।
এটি JSONPath থেকে কোথায় আলাদা
JSON Pointer একটি অবস্থানের নাম দেয় এবং সঠিকভাবে একটি মানে সমাধান হয় বা ব্যর্থ হয়। JSONPath একটি কোয়েরি ভাষা যা ওয়াইল্ডকার্ড, ফিল্টার এবং স্লাইস দিয়ে একসাথে অনেক মানের সাথে মিল খুঁজে পেতে পারে। একটি পয়েন্টার ব্যবহার করুন যখন আপনি ইতিমধ্যে জানেন কোন মান আপনি চান; JSONPath ব্যবহার করুন যখন আপনি এমন মান খুঁজছেন যা একটি শর্তের সাথে মিলে।