فرمت و اعتبارسنجی JSON

JSON را جای‌گذاری کنید تا خوانا، فشرده یا اعتبارسنجی شود؛ خطاها با محل دقیق نمایش داده می‌شوند.

خروجی

  

این ابزار کاملا در مرورگر شما اجرا می‌شود و هیچ داده‌ای به سرور ارسال نمی‌شود.

فهرست مطالب

فرمت JSON با این ابزار هم خوانا کردن است، هم بررسی درستی. JSON را در کادر بچسبانید؛ اگر معتبر باشد، شکل مرتب و رنگی آن در کادر خروجی نمایش داده می‌شود، همراه با پیام معتبر بودن و تعداد نویسه‌ها. کلیدها، رشته‌ها، عددها و مقدارهای منطقی هر کدام رنگ خودشان را دارند تا ساختار در یک نگاه دیده شود. دکمهٔ زیباسازی، JSON را با تورفتگی دو یا چهار فاصله یا تب مرتب می‌کند و دکمهٔ فشرده‌سازی، همهٔ فاصله‌های اضافه را برمی‌دارد تا کمترین حجم را داشته باشد. گزینهٔ مرتب‌سازی کلیدها، کلیدهای هر شیء را در همهٔ سطح‌ها به ترتیب الفبایی می‌چیند. اگر JSON نامعتبر باشد، پیام خطا همراه با شمارهٔ خط و ستون محل خطا نمایش داده می‌شود. همهٔ پردازش در مرورگر شما انجام می‌شود.

راهنمای استفاده از فرمت و اعتبارسنجی JSON

  1. JSON را در کادر جای‌گذاری کنید.
  2. «زیباسازی» یا «فشرده‌سازی» را بزنید؛ در صورت نیاز کلیدها را مرتب کنید.
  3. اگر JSON خطا داشته باشد، پیام خطا با شماره خط نمایش داده می‌شود.

JSON چیست؟

JSON قالبی متنی برای نوشتن داده است که از نحو اشیای جاوااسکریپت گرفته شده، اما امروز مستقل از هر زبانی، زبان مشترک تبادل داده در وب است. وقتی برنامهٔ گوشی شما اطلاعاتی از سرور می‌گیرد، وقتی سایتی آب‌وهوا یا قیمت را از سرویس دیگری می‌خواند، یا وقتی تنظیمات یک نرم‌افزار در فایلی ذخیره می‌شود، به احتمال زیاد قالب داده JSON است. دادهٔ ساختاریافتهٔ سئو که در صفحه‌های وب برای موتورهای جست‌وجو گذاشته می‌شود هم، نسخه‌ای از JSON است.

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

فرمت JSON؛ زیباسازی و فشرده‌سازی

یک JSON، سه شکل
JSON نمونهٔ ابزار؛ محتوا یکی است، فقط فاصله‌ها فرق دارند.

JSONی که از API‌ها برمی‌گردد، معمولا فشرده است؛ همه‌چیز در یک خط طولانی و بدون هیچ فاصلهٔ اضافه. این برای انتقال خوب است، چون حجم کمتری دارد، اما برای خواندن انسان تقریبا ناممکن است؛ به‌ویژه وقتی چند سطح شیء تودرتو دارد. زیباسازی همان داده را با خط تازه و تورفتگی می‌نویسد تا ساختار تودرتو دیده شود. هر سطح عمیق‌تر، به اندازهٔ تورفتگی انتخابی جلوتر می‌رود.

JSON نمونهٔ ابزار این تفاوت را نشان می‌دهد. در حالت فشرده، نودوچهار نویسه است. با تورفتگی دو فاصله، صدوسی‌وهفت نویسه و با چهار فاصله، صدوشصت‌وسه نویسه. محتوا در هر سه شکل دقیقا یکی است؛ فقط فاصله‌ها و خط‌ها فرق دارند و هر برنامه‌ای که JSON را بخواند، هر سه را یکسان می‌فهمد. تورفتگی دو فاصله در جاوااسکریپت و وب رایج‌تر است و چهار فاصله در برخی زبان‌ها و تیم‌ها. تب هم برای کسانی است که ویرایشگرشان را طوری تنظیم کرده‌اند که پهنای تب را خودشان انتخاب کنند.

فشرده‌سازی کاربرد عکس دارد. اگر JSON زیباسازی‌شده‌ای را باید در فایل تنظیمات کم‌حجم، در پارامتر یک درخواست یا در یک ستون پایگاه داده بگذارید، آن را فشرده کنید. برای فایل‌های بزرگ، فشرده‌سازی می‌تواند حجم را تا یک‌سوم یا بیشتر کم کند، بسته به تعداد سطح‌های تودرتو.

اعتبارسنجی JSON؛ رایج‌ترین خطاها

JSON درست یا نادرست؟
JSON از جاوااسکریپت سخت‌گیرتر است.

JSON از جاوااسکریپت، که از آن الهام گرفته، سخت‌گیرتر است و چیزهایی که در جاوااسکریپت مجازند، در JSON خطا می‌دهند. اولین و رایج‌ترین خطا، کلید بدون نقل‌قول است؛ در JSON هر کلید باید داخل نقل‌قول دوتایی باشد. دومی، استفاده از نقل‌قول تکی است؛ JSON فقط نقل‌قول دوتایی را می‌پذیرد، چه برای کلید و چه برای رشته. سومی، ویرگول انتهایی است؛ ویرگول پس از آخرین عضو شیء یا آرایه، که بسیاری از زبان‌ها و ویرایشگرها اجازه می‌دهند، در JSON ممنوع است. چهارمی، ویرگول جاافتاده بین دو عضو است که معمولا هنگام ویرایش دستی و افزودن عضو تازه پیش می‌آید.

خطاهای دیگر هم هست؛ توضیح‌ها، یعنی کامنت‌ها، در JSON مجاز نیستند. مقدارهای خاص جاوااسکریپت، مثل تعریف‌نشده، بی‌نهایت یا نه‌عدد، در JSON وجود ندارند. عددها نمی‌توانند با صفر اضافه شروع شوند و رشته‌ها نمی‌توانند خط تازهٔ واقعی داخلشان داشته باشند؛ باید از نماد خط تازه با خط مورب وارونه استفاده کرد. هر کدام از این‌ها پیام خطا می‌دهد.

JSON نادرست پیام خطا محل
{"a":1,} انتظار نام کلید با نقل‌قول دوتایی ستون ۸
{a:1} انتظار نام کلید یا آکولاد بسته ستون ۲
{'a':1} انتظار نام کلید یا آکولاد بسته ستون ۲
{"a":1 "b":2} انتظار ویرگول یا آکولاد بسته پس از مقدار ستون ۸

جدول بالا پیام‌های واقعی مرورگر را برای چهار خطای رایج نشان می‌دهد. ابزار پیام مرورگر را نمایش می‌دهد و اگر مرورگر محل خطا را گزارش کرده باشد، آن را به شمارهٔ خط و ستون تبدیل می‌کند. پیام‌ها به انگلیسی‌اند، چون از خود مرورگر می‌آیند و متن دقیقشان بین مرورگرها کمی فرق دارد. نکتهٔ مهم این است که محل گزارش‌شده، جایی است که خواننده متوجه خطا شده، نه لزوما جایی که خطا اتفاق افتاده. برای ویرگول جاافتاده، خطا در ابتدای عضو بعدی گزارش می‌شود؛ پس اگر در محل گزارش‌شده مشکلی نمی‌بینید، یک نویسه یا یک خط عقب‌تر را نگاه کنید.

مرتب‌سازی کلیدها

گزینهٔ مرتب‌سازی کلیدها، کلیدهای هر شیء را، در همهٔ سطح‌های تودرتو، به ترتیب الفبایی می‌چیند. ترتیب عضوهای آرایه‌ها تغییر نمی‌کند، چون در آرایه ترتیب معنا دارد، اما ترتیب کلیدهای شیء از نظر معنا اهمیتی ندارد. این گزینه دو کاربرد اصلی دارد. اول، پیدا کردن کلیدها در شیءهای بزرگ؛ وقتی شیئی صد کلید دارد، ترتیب الفبایی پیدا کردن کلید مورد نظر را ساده می‌کند.

کاربرد دوم، مقایسهٔ دو JSON است. دو پاسخ API که محتوای یکسانی دارند ممکن است کلیدها را با ترتیب متفاوتی برگردانند و مقایسهٔ متنی‌شان، تفاوت‌های غیرواقعی زیادی نشان دهد. هر دو را با مرتب‌سازی کلیدها و تورفتگی یکسان زیباسازی کنید و بعد در مقایسه متن کنار هم بگذارید؛ حالا فقط تفاوت‌های واقعی دیده می‌شوند.

دام عددهای بزرگ

یکی از کمتر شناخته‌شده‌ترین مشکلات JSON در مرورگرها و جاوااسکریپت، دقت عددهاست. جاوااسکریپت همهٔ عددها را با قالبی ذخیره می‌کند که عددهای صحیح را فقط تا حدود نه میلیون میلیارد دقیق نگه می‌دارد. اگر JSON شامل عددی بزرگ‌تر باشد، مثلا شناسه‌ای بیست‌رقمی، هنگام خواندن، رقم‌های آخرش گرد می‌شوند. مثلا عدد ۱۲۳۴۵۶۷۸۹۰۱۲۳۴۵۶۷۸۹۰ پس از خوانده شدن، به ۱۲۳۴۵۶۷۸۹۰۱۲۳۴۵۶۷۰۰۰ تبدیل می‌شود و دیگر همان شناسه نیست.

این ابزار هم، چون از خواننده‌ٔ JSON مرورگر استفاده می‌کند، همین رفتار را دارد؛ اگر JSON شما عدد صحیح بسیار بزرگی دارد، پس از زیباسازی، رقم‌های آخرش را با دقت مقایسه کنید. راه حل در سمت تولیدکنندهٔ JSON است؛ شناسه‌های بلند، شماره‌حساب‌ها، کدهای رهگیری و هر عدد بزرگی که دقتش مهم است، باید به شکل رشته، داخل نقل‌قول، فرستاده شوند. بسیاری از API‌های بزرگ دنیا به همین دلیل شناسه‌ها را هم به شکل عدد و هم به شکل رشته برمی‌گردانند.

کلیدهای تکراری و متن فارسی

اگر شیئی یک کلید را دو بار داشته باشد، استاندارد JSON رفتار را دقیقا تعیین نکرده، اما خوانندهٔ مرورگر، آخرین مقدار را نگه می‌دارد و اولی را بی‌صدا دور می‌اندازد. پس اگر پس از زیباسازی، کلیدی را نمی‌بینید که مطمئنید در ورودی بوده، احتمالا تکراری بوده است. این خطا در JSONهایی که دستی ویرایش شده‌اند یا از چند منبع سرهم شده‌اند، رایج است.

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

JSON در سئو و اسکیما

دادهٔ ساختاریافته‌ای که سایت‌ها برای موتورهای جست‌وجو در صفحه می‌گذارند، با قالبی به نام JSON-LD نوشته می‌شود که همان JSON با چند کلید ویژه است. اگر کد اسکیما را دستی ویرایش کرده‌اید و ابزار آزمایش نتایج غنی گوگل خطا می‌دهد، کد را، بدون تگ اسکریپت دورش، در این ابزار بچسبانید تا خطای نحوی را پیدا کنید. بیشتر خطاهای اسکیمای دست‌نویس، همان ویرگول‌های جاافتاده یا اضافه و نقل‌قول‌های نادرست‌اند. برای ساختن اسکیمای بی‌خطا از اول، ساخت اسکیما را ببینید.

نمونه؛ اشکال‌یابی پاسخ یک API

فرض کنید برنامهٔ شما اطلاعات سفارش‌ها را از سرویس فروشگاه می‌گیرد و جایی از برنامه خطا می‌دهد که فیلد قیمت پیدا نشد. پاسخ سرویس را از ابزارهای توسعه‌دهندهٔ مرورگر یا گزارش سرور کپی کنید و در ابزار بچسبانید. پاسخ فشرده یک خط چندهزارنویسه‌ای است؛ با زیباسازی، ساختارش دیده می‌شود. حالا می‌بینید که قیمت در واقع داخل شیء دیگری به نام جزئیات قرار دارد، نه در سطح اول؛ یا نامش با حرف بزرگ نوشته شده؛ یا برای برخی سفارش‌ها مقدار تهی دارد. همین نگاه ساختاری، بیشتر خطاهای این‌چنینی را در یک دقیقه حل می‌کند.

اگر پاسخ اصلا JSON معتبر نیست، پیام خطای ابزار راهنماست. پاسخ‌هایی که با صفحهٔ خطای HTML شروع می‌شوند، یعنی سرور به جای JSON، صفحهٔ خطا برگردانده؛ مشکل در درخواست یا سرور است، نه در خواندن JSON. پاسخ‌هایی که در وسط قطع شده‌اند، معمولا به خاطر محدودیت حجم یا زمان در مسیرند و ابزار پیام پایان غیرمنتظره می‌دهد.

فایل‌های تنظیمات

بسیاری از نرم‌افزارها و ابزارهای برنامه‌نویسی، تنظیماتشان را در فایل JSON نگه می‌دارند. یک ویرگول جاافتاده در این فایل‌ها می‌تواند برنامه را از کار بیندازد، معمولا با پیامی مبهم. پیش از ذخیرهٔ تغییرات دستی در چنین فایلی، محتوایش را در ابزار بچسبانید تا مطمئن شوید معتبر است. برخی ابزارها برای فایل تنظیمات، نسخه‌ای گسترش‌یافته از JSON را می‌پذیرند که کامنت و ویرگول انتهایی را مجاز می‌داند؛ این فایل‌ها در این ابزار خطا می‌دهند، چون JSON استاندارد نیستند، اما برای خود آن نرم‌افزار درست‌اند.

JSONهای بزرگ و کار با اکسل

ابزار JSONهای تا چند مگابایت را بدون مشکل پردازش می‌کند، اما رنگ‌بندی فایل‌های خیلی بزرگ ممکن است مرورگر را کمی کند کند. برای فایل‌های ده‌ها مگابایتی، ویرایشگرهای کد یا ابزارهای خط فرمان مناسب‌ترند. اگر داده‌ای در JSON دارید که باید در اکسل یا صفحه‌گسترده تحلیل شود، مثلا فهرستی از سفارش‌ها، بیشتر برنامه‌های صفحه‌گسترده امروزی امکان وارد کردن JSON را دارند و آرایه‌ای از شیءها را به جدول تبدیل می‌کنند. پیش از وارد کردن، JSON را در این ابزار اعتبارسنجی کنید تا مطمئن شوید خطایی ندارد.

خطاهای رایج در کار با ابزار

خطای اول، چسباندن چیزی که JSON نیست، مثلا شیء جاوااسکریپت با کلیدهای بدون نقل‌قول یا پاسخی که با متن توضیحی شروع شده. خطای دوم، چسباندن JSON همراه با تگ اسکریپت دور آن. خطای سوم، اعتماد به عددهای بزرگ پس از زیباسازی. و خطای چهارم، کپی کردن خروجی رنگی به جای متن ساده؛ دکمهٔ کپی ابزار، متن خالص JSON را بدون رنگ‌ها کپی می‌کند، اما اگر متن را با موس انتخاب کنید، برخی ویرایشگرها قالب‌بندی را هم می‌چسبانند.

نوشتن JSON دستی؛ چند عادت خوب

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

برای نام کلیدها هم قراردادی یکدست انتخاب کنید و در کل پروژه رعایت کنید؛ مثلا همه با حروف کوچک و کلمه‌های چسبیده با حرف بزرگ، یا همه با زیرخط. قاطی کردن این قراردادها، خطاهایی می‌سازد که پیدا کردنشان سخت است، چون JSON معتبر است اما برنامه دنبال کلید دیگری می‌گردد.

حریم خصوصی

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

یک قاعدهٔ سریع برای پیدا کردن خطا

اگر پیام خطا کمکی نکرد و JSON طولانی است، آن را نصف کنید؛ نیمهٔ اول را با بستن آکولادها و کروشه‌های باز، به JSON کاملی تبدیل کنید و امتحانش کنید. اگر معتبر بود، خطا در نیمهٔ دوم است. این روش تقسیم، در چند قدم محل دقیق خطا را حتی در فایل‌های چندهزارخطی پیدا می‌کند. پس از پیدا کردن و اصلاح خطا، کل فایل را یک بار دیگر در ابزار بچسبانید، چون گاهی بیش از یک خطا وجود دارد.

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

اگر مقداری در JSON به شکل Base64 است، آن را با تبدیل Base64 برگردانید و اگر JSON در پارامتر لینک کدگذاری شده، اول با رمزگذاری URL رمزگشایی‌اش کنید. همهٔ ابزارهای برنامه‌نویسی در ابزارهای برنامه‌نویسی آمده‌اند.

آخرین بازبینی محتوا: · تیم تحریریه ابزار جیبی

سوالات متداول

آیا JSON من جایی ذخیره می‌شود؟
خیر؛ پردازش کاملا در مرورگر انجام می‌شود.
JSON چیست؟
قالبی متنی برای ذخیره و انتقال داده که از شیءها با کلید و مقدار و آرایه‌ها ساخته می‌شود. تقریبا همهٔ API‌های وب و بسیاری از فایل‌های تنظیمات از آن استفاده می‌کنند.
چطور خطای JSON را پیدا کنم؟
JSON را در ابزار بچسبانید؛ اگر نامعتبر باشد، ابزار پیام خطا را همراه با شمارهٔ خط و ستون محل خطا نشان می‌دهد. معمولا خطا درست همان‌جا یا یک نویسه پیش از آن است.
چرا عدد بزرگ در JSON عوض می‌شود؟
جاوااسکریپت عددها را با دقت محدود نگه می‌دارد و عددهای صحیح بزرگ‌تر از حدود نه میلیون میلیارد، با گرد شدن رقم‌های آخر خوانده می‌شوند. شناسه‌های بلند را در JSON به شکل رشته بفرستید.
فرق زیباسازی و فشرده‌سازی JSON چیست؟
زیباسازی با تورفتگی و خط تازه، JSON را برای انسان خوانا می‌کند. فشرده‌سازی همهٔ فاصله‌های اضافه را حذف می‌کند تا حجم برای انتقال کم شود. محتوا در هر دو یکی است.

این ابزار چقدر برایتان مفید بود؟

اولین نفری باشید که به این ابزار امتیاز می‌دهد.

↑ ↓ جابه‌جاییEnter باز کردنEsc بستن