JSON Toolkit

JSONPath یا JSON Pointer

جمع‌بندی: JSON Pointer آدرسی یکتاست که می‌توانید به‌عنوان کلید ذخیره‌اش کنید؛ JSONPath یک زبان پرس‌وجوست. استفاده از انتخاب اشتباه به‌روزرسانی پیکربندی را می‌شکند یا JSONPath ناقصی بازمی‌سازد.

متوسطحدود 4 دقیقه مطالعهانتشار 2026-10-30به‌روزرسانی 2026-10-30
جایی که JSONPath تمام می‌شود و JSON Pointer آغاز می‌شود

جمع‌بندی: وقتی باید آدرس یک گره را بخوانید، بنویسید یا ذخیره کنید از JSON Pointer استفاده کنید (مثلاً /server/cors/0)، و وقتی باید مجموعه‌ای از گره‌ها را بر اساس شرط انتخاب کنید از JSONPath؛ هر مسیر ماندگار باید Pointer باشد، هرگز یک عبارت.

بپرسید به یک گره نیاز دارید یا مجموعه‌ای از آن‌ها.

در یک جدول

JSON Pointer JSONPath
ماهیت آدرس یکتا عبارت پرس‌وجو
نحو /a/b/0 $.a.b[0]، $..price
نتیجه دقیقاً یک گره، یا هیچ صفر یا بیشتر گره
قابل ذخیره به‌عنوان کلید بله، رشته همان هویت است نه، ممکن است چند تا را تطبیق دهد
استاندارد RFC 6901 RFC 9535 (نهایی‌شده ۲۰۲۴)

JSON Pointer

/server/host        -> "127.0.0.1"
/server/cors/0      -> "https://a.com"
/                   -> the whole document

کلیدهای شامل / یا ~ escape می‌شوند: ~0 برای ~، ~1 برای /. ارزشش قطعیت است: آدرس یک رشته است، پس در ستون پایگاه‌داده، خط لاگ یا کلید پیکربندی جا می‌شود. JSON Patch (RFC 6902) هر عملیات را این‌گونه آدرس‌دهی می‌کند.

JSONPath

$.store.book[*].author
$..price
$.store.book[?(@.price < 10)]

نزدیک‌تر به WHERE در SQL. همان عبارت بسته به داده صفر، یک یا صد گره برمی‌گرداند.

دو حالت شکست

استفاده از JSONPath به‌عنوان کلید پیکربندی. $.server.port را ذخیره کنید و روزی ساختار به آرایه تبدیل شود؛ عبارت اکنون چند port را تطبیق می‌دهد و منطق به‌روزرسانی هیچ راهی برای انتخاب ندارد.

استفاده از Pointer برای انتخاب. «هر گره‌ای که قیمتش زیر ۱۰ است را پیدا کن» با pointer ممکن نیست. نوشتن خود حلقه یعنی ساختن یک JSONPath ناقص.

سیستم‌های واقعی چگونه کار را تقسیم می‌کنند

  • خواندن پیکربندی، به‌روزرسانی فیلد، patch: Pointer، ثابت و قابل حسابرسی
  • کاوش داده، استخراج انبوه، گزارش‌گیری: JSONPath، بیان‌گری اول
  • هر چیز ماندگار: فقط Pointer، هرگز یک عبارت

پرسش‌های متداول

چگونه بین JSON Pointer و JSONPath انتخاب کنم؟

بپرسید به یک گره نیاز دارید یا مجموعه‌ای. از JSON Pointer برای خواندن یا نوشتن یک گره مشخص و ذخیره آن آدرس به‌عنوان کلید استفاده کنید، چون pointer یکتاست، مثلاً /server/cors/0. از JSONPath برای انتخاب گره‌ها بر اساس شرط استفاده کنید، مثلاً $.store.book[?(@.price < 10)].

چرا عبارت JSONPath نمی‌تواند به‌عنوان کلید پیکربندی استفاده شود؟

چون عبارت ممکن است چند گره را تطبیق دهد. $.server.port را ذخیره کنید و روزی ساختار به آرایه تبدیل شود؛ عبارت آن‌گاه چند port را تطبیق می‌دهد و منطق به‌روزرسانی نمی‌تواند تصمیم بگیرد کدام را تغییر دهد. هر چیز ماندگار یا حسابرسی‌شده به Pointer نیاز دارد.

آیا JSON Pointer می‌تواند گره‌ها را بر اساس شرط فیلتر کند؟

نه. pointer فقط مسیری ثابت را طی می‌کند و راهی برای دانستن اینکه کدام گره‌ها وجود دارند ندارد، پس انتخاب هر گره‌ای که قیمتش زیر ۱۰ است ممکن نیست. نوشتن آن حلقه یعنی ساختن یک JSONPath ناقص.

مطالعه بیشتر

ابزارهای مرتبط

مقالات مرتبط

زبان پرس‌وجوی JSONPath در عمل

در ۲۰۲۴ JSONPath سرانجام استاندارد رسمی گرفت، RFC 9535. این مقاله نحو، معناشناسی فیلتر، توابع و تفاوت‌های تاریخی بین پیاده‌سازی‌ها را توضیح می‌دهد.

متوسطحدود 12 دقیقه مطالعهبه‌روزرسانی 2026-10-30

JSON Pointer، Patch و Merge Patch

سه مشخصات کوتاه یک پروتکل تغییر می‌سازند: Pointer مکان‌یابی می‌کند، Patch دقیق ویرایش می‌کند، Merge Patch جزئی ادغام می‌کند. انتخاب اشتباه به آرایه‌ها و هم‌زمانی آسیب می‌زند.

متوسطحدود 12 دقیقه مطالعهبه‌روزرسانی 2026-10-30

پرسش‌های متداول ابزار: داده، فایل و خروجی

آیا داده آپلود می‌شود، چه حجم فایلی کار می‌کند، چیزی محلی ذخیره می‌شود، چرا چینی به escape تبدیل می‌شود: ده پرسش که مرزهای واقعی یک ابزار آنلاین JSON را روشن می‌کند.

مقدماتیحدود 10 دقیقه مطالعهبه‌روزرسانی 2026-10-30