UTILS.
۱۰۰٪ در مرورگر
{ }

تبدیل شیء JS به JSON سخت‌گیرانه

یک شیء literal شل JavaScript را — کلیدهای بدون‌گیومه، تک‌کوتیشن، ویرگول‌های انتهایی، کامنت‌ها — به JSON معتبر و سخت‌گیرانه تعمیر کنید، بدون eval.

— خروجی اینجا نمایش داده می‌شود —

درباره این ابزار

ابزار تبدیل شیء JS به JSON سخت‌گیرانه یک شیء literal شل JavaScript یا به‌سبک JSON5 را به JSON سخت‌گیرانه و معتبر تعمیر می‌کند. بر پایه یک tokenizer دست‌نوشته ساخته شده — هرگز از eval یا new Function استفاده نمی‌کند — پس تحت یک Content Security Policy سخت‌گیرانه ایمن است و چسباندن متن نامعتمد در آن امن است. همه چیز در مرورگر شما اجرا می‌شود.

چیزهایی را می‌پذیرد که JSON واقعی رد می‌کند: کلیدهای شناسه‌ای بدون‌گیومه، رشته‌های تک‌کوتیشن، ویرگول‌های انتهایی پیش از ] یا }، کامنت‌های خطی // و بلوکی /* */، اعداد شانزده‌شانزدهی (0xFF)، literalهای هشت‌هشتی و دودویی، اعداد با علامت-مثبت ابتدایی و نقطه ابتدایی (+1، ‏.5)، و مقادیر undefined، ‏NaN و Infinity. کلیدها با دابل‌کوتیشن مجدداً در گیومه قرار می‌گیرند، رشته‌ها به‌درستی مجدداً escape می‌شوند، کامنت‌ها و ویرگول‌های انتهایی حذف می‌شوند، و اعداد به اعداد ساده JSON نرمال می‌شوند. شما انتخاب می‌کنید که با undefined چگونه رفتار شود (تبدیل به null یا حذف کلید) و با اعداد غیرمتناهی (تبدیل به null یا برانگیختن یک خطا)، سپس مقدار با JSON.stringify در تورفتگی انتخابی شما — ۲ فاصله، ۴ فاصله، tab یا minify‌شده — مجدداً سریالایز می‌شود.

هنگامی که ورودی نتواند تجزیه شود، ابزار اولین خطای نحوی را با خط و ستون آن گزارش می‌دهد تا بتوانید مشکل را سریع پیدا کنید. این مکمل یک قالب‌ساز JSON سخت‌گیرانه است، که صرفاً ورودی شل را رد می‌کند — اینجا هدف نجات خروجی کنسول کپی‌شده، قطعه‌های config و اشیای دستی-ویرایش‌شده به JSONای است که هر parser آن را می‌پذیرد.

پرسش‌های پرتکرار

چه نحو شلی را می‌پذیرد؟
کلیدهای بدون‌گیومه، رشته‌های تک‌کوتیشن، ویرگول‌های انتهایی، کامنت‌های // و /* */، اعداد شانزده‌شانزدهی/هشت‌هشتی/دودویی، اعداد با علامت-مثبت ابتدایی و نقطه ابتدایی، و literalهای undefined، ‏NaN و Infinity — چیزهای رایجی که اشیای کپی‌شده JS را به‌عنوان JSON نامعتبر می‌کنند.
آیا برای تجزیه از eval استفاده می‌کند؟
خیر. از یک tokenizer دست‌نوشته و parser بازگشتی-نزولی استفاده می‌کند، هرگز eval یا new Function، پس تحت یک Content Security Policy سخت‌گیرانه کار می‌کند و برای ورودی نامعتمد ایمن است. تنها داده تولید می‌کند، هرگز کد اجرا نمی‌کند.
undefined، ‏NaN و Infinity چگونه مدیریت می‌شوند؟
JSON چنین مقادیری ندارد. شما انتخاب می‌کنید: undefined می‌تواند null شود یا کلیدش حذف شود، و NaN/Infinity می‌تواند null شود یا یک خطا برانگیزد. این خروجی را در هر صورت کاملاً معتبر JSON نگه می‌دارد.
وقتی ورودی نامعتبر است چه اتفاقی می‌افتد؟
parser در اولین خطای نحوی واقعی متوقف می‌شود و آن را با خط و ستونی که رخ داده گزارش می‌دهد، پس می‌توانید کاراکتر مشکل‌ساز را به‌جای حدس زدن پیدا و رفع کنید.

ابزارهای بیشتر