JSON Toolkit

null یا حذف فیلد

جمع‌بندی: `null` می‌گوید فیلد وجود دارد بدون مقدار؛ حذف می‌گوید فیلد وجود ندارد. بدنه‌های PATCH، ادغام پیکربندی و پیش‌پر کردن فرم جاهایی هستند که تفاوت گاز می‌گیرد.

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

جمع‌بندی: وقتی مصرف‌کننده باید «پاک شد» را از «دست نخورد» تشخیص دهد null بفرستید — در بدنه PATCH، غیبت فیلد را دست‌نخورده می‌گذارد و null صریح پاکش می‌کند — و برای هر فیلد یک قرارداد نگه دارید تا پاسخ‌ها و ادغام‌های پیکربندی پایدار بمانند.

تفاوت

{ "nickname": null }

حاضر، خالی. مصرف‌کننده می‌داند فیلد صریحاً پاک شده.

{ }

غایب. مصرف‌کننده نمی‌تواند «هرگز تنظیم نشد» را از «پشتیبانی نمی‌شود» تشخیص دهد.

در جاوااسکریپت تمایز مشخص است:

'nickname' in obj          // false — absent
obj.nickname === null      // true  — present and null
obj.nickname === undefined // true  — both cases

کجا مهم است

بدنه‌های PATCH. {"nickname": null} نام مستعار را پاک می‌کند. {} چیزی را تغییر نمی‌دهد. اگر handler «null» و «گم‌شده» را یکسان بگیرد، کاربران هرگز نمی‌توانند فیلد را پاک کنند — فقط می‌توانند رشته خالی بگذارند که چیز دیگری است.

با حضور کلید پیاده کنید، نه مقدار:

if (Object.hasOwn(patch, 'nickname')) {
  target.nickname = patch.nickname;   // null allowed
}

ادغام پیکربندی. حذف پیش‌فرض را به ارث می‌برد؛ null صریحاً غیرفعالش می‌کند. دقیقاً همان‌گونه که مقادیر Helm و Kubernetes رفتار می‌کنند.

پیش‌پر کردن فرم. null به‌صورت خالی نمایش داده می‌شود و فیلد گم‌شده هم همین‌طور، اما ارسال متفاوت است: مقدار داشت، اکنون پاک شده → null بفرستید؛ هرگز پر نشد → حذف کنید. بدون این تمایز، پاک کردن مانند دست نزدن به نظر می‌رسد.

قراردادها

موقعیت قرارداد
بدنه پاسخ null را نگه دارید؛ شکل پایدار، نوع‌های ساده‌تر
درخواست PATCH null پاک می‌کند، حذف حفظ می‌کند
PUT (جایگزینی کامل) حذف یعنی پاک کردن — کل سند جایگزین می‌شود
ادغام پیکربندی حذف = پیش‌فرض، null = غیرفعال
پایگاه‌داده null برای ناشناخته یا نامرتبط؛ '' برای خالیِ شناخته‌شده

شکل پاسخ‌ها را پایدار نگه دارید. فهرستی که برخی آیتم‌ها avatar دارند و برخی نه، در هر نقطه فراخوانی بررسی 'avatar' in item را تحمیل می‌کند. avatar: null مصرف‌ش ساده‌تر است.

سه کاری که نکنید

برای null از "" استفاده نکنید. نام مستعار خالی و نام مستعار تنظیم‌نشده در بیشتر دامنه‌ها حالت‌های متفاوتی‌اند.

از 0 یا -1 به‌عنوان نگهبان استفاده نکنید. صفر عدد مشروعی است و نگهبان هر میانگینی را که محاسبه می‌کنید خراب می‌کند.

قراردادها را بین endpointها مخلوط نکنید. دو قرارداد یعنی دو مسیر کد در هر کلاینت.

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

چه چیزی بین null و فیلد حذف‌شده تصمیم می‌گیرد؟

بپرسید آیا مصرف‌کننده باید «صریحاً پاک شد» را از «هرگز تنظیم نشد» تشخیص دهد. در بدنه PATCH باید، پس null پاک می‌کند و غیبت حفظ؛ در پاسخ‌ها، نگه داشتن null شکل را پایدار و نوع‌های کلاینت را ساده‌تر می‌کند.

endpoint PATCH چگونه پاک کردن را از دست نزده تشخیص می‌دهد؟

حضور کلید را بررسی کنید، نه مقدار: Object.hasOwn(patch, 'nickname') می‌گوید فیلد فرستاده شده و فقط آن‌گاه انتساب دهید، null هم شامل. اگر handler null و گم‌شده را یکسان بگیرد، کاربران هرگز نمی‌توانند فیلد را پاک کنند و فقط می‌توانند به رشته خالی برگردند.

چرا بدنه‌های پاسخ باید null را نگه دارند؟

شکل پایدار یعنی کلاینت‌ها برای هر کلید اختیاری به بررسی 'avatar' in item نیاز ندارند. وقتی برخی آیتم‌های فهرست avatar دارند و برخی حذفش می‌کنند، آن بررسی در هر نقطه فراخوانی تکرار می‌شود و اشتباه‌شدنش آسان است.

مطالعه بیشتر

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

مقالات مرتبط

نکات کلیدی طراحی قرارداد داده API در JSON

شش چیز پس از انتشار بسیار سخت تغییر می‌کنند: پاکت پاسخ، قالب خطا، شکل صفحه‌بندی، نمایش شناسه و زمان، معناشناسی null در برابر غایب، و تکامل نسخه.

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

JSON Pointer، Patch و Merge Patch

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

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

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

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

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