پرسشهای متداول ابزار: داده، فایل و خروجی
آیا داده آپلود میشود، چه حجم فایلی کار میکند، چیزی محلی ذخیره میشود، چرا چینی به escape تبدیل میشود: ده پرسش که مرزهای واقعی یک ابزار آنلاین JSON را روشن میکند.
پرتکرارترین پرسشها درباره ابزارهای این سایت و مشخصات JSON را بر اساس سناریو گردآوری میکند و بهجای نتیجهگیری مبهم، پاسخی میدهد که میتوانید مستقیم روی آن اقدام کنید.
25 مقالهآیا داده آپلود میشود، چه حجم فایلی کار میکند، چیزی محلی ذخیره میشود، چرا چینی به escape تبدیل میشود: ده پرسش که مرزهای واقعی یک ابزار آنلاین JSON را روشن میکند.
آیا کامنت مجاز است، چرا ویرگول انتهایی خطا میدهد، آیا کلیدها به گیومه نیاز دارند، چرا 9007199254740993 تغییر میکند — دوازده نتیجه که هر یک بر اساس RFC 8259 بررسی شده است.
آیا پرسوجوی مسیر باید از JSONPath یا Pointer استفاده کند، چگونه بین Patch و Merge Patch انتخاب کنیم، Schema چه چیزی را میتواند مسدود کند، و نسخه draft را چگونه انتخاب کنیم — همه در یک مرور توضیح داده شده است.
چرا فایل JSON چند ده مگابایتی باز نمیشود، شبیهسازی عمیق چقدر گران است، چگونه از آلودگی __proto__ جلوگیری کنیم و XSS از کجا وارد میشود — ده نتیجه کمک اولیه که بر اساس نشانه مرتب شدهاند.
سبک نامگذاری، قالب زمان، معناشناسی null، شکل enum، قالب پیکربندی، سازماندهی fixture و تعارض ادغام — دوازده مصالحهای که تیمها واقعاً بر سرشان بحث میکنند.
RFC 8259 نحو کامنت ندارد، پس `//` و کامنت بلوکی باعث پرتاب خطا توسط JSON.parse میشوند. از JSON5 یا JSONC، فیلد `_comment`، توضیح Schema یا YAML استفاده کنید.
ویرگول انتهایی در object literalهای جاوااسکریپت قانونی و در JSON مرگبار است. خطای دقیق، دستور زبان RFC 8259 که باعثش میشود و سه اصلاح که واقعاً دوام میآورد اینجاست.
BOM در UTF-8 سه بایت نامرئی است، پس JSON.parse روی نخستین نویسه شکست میخورد و خط ۱ ستون ۱ را گزارش میکند، که فایل را خالی یا ناقص نشان میدهد.
JSON فقط literalهای عدد اعشاری دارد. JSON.stringify بدون هشدار NaN و Infinity را به null تبدیل میکند، و همین است که «فیلد عددی گاهی null است» مدام در محیط تولید ظاهر میشود.
عددهای صحیح بالاتر از 2^53-1 در JSON.parse دقت را از دست میدهند. شناسههای snowflake، شماره سفارش و bigintهای پایگاهداده همه به این مشکل میخورند، پس آنها را سرتاسر بهصورت رشته نگه دارید.
escape بهصورت \u4e2d\u6587 یونیکد قانونی است، نه خرابی رمزگذاری. mojibake واقعی متفاوت به نظر میرسد و تشخیص این دو تعیین میکند واقعاً چه چیزی باید اصلاح شود.
ابرمجموعههای سختگیر به ترتیب: JSONC کامنت اضافه میکند؛ JSON5 تکگیومه، کلید بیگیومه، ویرگول انتهایی و عدد هگز اضافه میکند. انتخاب اشتباه API را میشکند، نه ویرایشگر را.
JSON با آکولاد و YAML با تورفتگی مرزبندی میکند: ماشینها JSON میگیرند، انسانهایی که پیکربندی ویرایش میکنند YAML. کامنت، anchor و ساختار چندسندی از تبدیل جان سالم به در نمیبرند.
JSON Pointer آدرسی یکتاست که میتوانید بهعنوان کلید ذخیرهاش کنید؛ JSONPath یک زبان پرسوجوست. استفاده از انتخاب اشتباه بهروزرسانی پیکربندی را میشکند یا JSONPath ناقصی بازمیسازد.
Schema ساختار و نوع را حکومت میکند، نه معنای کسبوکار. فیلد گمشده، نوع اشتباه و enum بیرون از بازه را متوقف میکند، اما قواعدی مانند مبلغ بالای صفر در کد میمانند.
2020-12 نسخه کنونی است و $defs، prefixItems و unevaluatedProperties را اضافه میکند، اما بسیاری ابزارها همچنان فقط draft-07 را میفهمند. بر اساس پشتیبانی کل زنجیره ابزارتان انتخاب کنید.
json-schema-to-typescript و quicktype با یک فرمان یک .d.ts تولید میکنند، اما پیشنویس است: اختیاری بودن، union، additionalProperties و تاریخها نیاز به بازبینی انسانی دارند.
بهینهسازی با ترتیب اشتباه هر تعویض کتابخانهای را بیفایده میکند. شبکه، تجزیه و رندر را جدا اندازه بگیرید، سپس تجزیهها را کم کنید، payload را کوچک کنید و جریان دهید.
JSON.parse با __proto__ بهعنوان کلید معمولی برخورد میکند؛ آسیب در ادغام بازگشتیای رخ میدهد که در Object.prototype مینویسد، پس هر شیء ویژگیهای مهاجم را به ارث میبرد.
JSON هرگز خودش اجرا نمیشود. XSS در لحظهای رخ میدهد که آن را HTML میپندارید — الحاق رشته در سرور، innerHTML فرانتاند، یا جاسازی مستقیم JSON در تگ اسکریپت.
برای فهمیدنش نیازی به خواندن سیاست حریم خصوصی نیست. پنل شبکه را باز کنید، صفحه را آفلاین امتحان کنید، و تازهسازی کنید تا ببینید چیزی ماندگار شده است یا نه. دو دقیقه، سه بررسی، بدون نیاز به اعتماد.
محدودیت ثابتی وجود ندارد؛ قید، بودجه حافظه تب شماست. فایل ۲۰ مگابایتی معمولاً پس از تجزیه ۶۰ تا ۱۰۰ مگابایت میشود و DOM هایلایتشده میتواند دوباره دو برابرش کند.
اشیای خالی تا وقتی به فراداده نیاز پیدا نکنید تمیزند؛ پاکت کامل امن اما پرگو است. برای بیشتر پروژهها از وضعیت HTTP برای نتیجه و پاکت پایدار برای داده استفاده کنید.
عددهای epoch و رشتههای ISO هر یک مصالحه دارند، اما مخلوط کردنشان همان چیزی است که واقعاً چیزها را میشکند. از ISO 8601 با offset استفاده کنید، UTC ذخیره کنید، در منطقه زمانی کاربر نمایش دهید.
`null` میگوید فیلد وجود دارد بدون مقدار؛ حذف میگوید فیلد وجود ندارد. بدنههای PATCH، ادغام پیکربندی و پیشپر کردن فرم جاهایی هستند که تفاوت گاز میگیرد.