فایل JSON چیست، با چه چیزی باز میشود و چگونه ویرایش میشود
جمعبندی: از متن آشوب در Notepad تا سه راه برای باز کردن فایل JSON، بههمراه نحوه اطمینان از سالم ماندن پس از ویرایش و کاری که باید با فایل بسیار بزرگ کرد.

جمعبندی: پیش از باز کردن فایل JSON رمزگذاری و BOM آن را تأیید کنید، سپس مطمئن شوید ساختار فقط یک object یا array است؛ پس از ویرایش همیشه با یک تجزیهکننده اعتبارسنجی کنید نه با چشمدواندن میان براکتها و ویرگولها.
این فقط یک فایل متنی ساده با پسوند
.jsonاست و حتی Notepad هم میتواند آن را باز کند. سردرد واقعی «باز نشدن» نیست، بلکه این است که پس از باز شدن نمیبینید چه چیزی را خراب کردهاید.
۱. واقعاً درون فایل JSON چیست
یک فایل JSON معتبر میتواند فقط یکی از دو چیز را در خود داشته باشد: یک object {...} یا یک array [...]. هیچ چیز دیگری مجاز نیست — نه اعلان متغیر، نه کامنت، نه تابع.
{
"name": "order service",
"port": 8080,
"debug": false,
"upstream": ["10.0.0.11", "10.0.0.12"],
"timeout": null
}
تشخیص ساختاری سه چیز کافی است:
| آنچه میبینید | معنا | مفهوم متناظر در برنامهنویسی |
|---|---|---|
جفتهای کلید-مقدار درون { } |
یک object؛ کلیدها باید رشته درون گیومه دوتایی باشند | Map / struct |
دنبالهای از مقدارها درون [ ] |
یک array؛ انواع عناصر میتوانند متفاوت باشند | List |
| شش نوع مقدار | رشته، عدد، بولین، null، object، array | فقط همین شش؛ نه تاریخ و نه عدد صحیح |
پسوند فایل محتوا را تعیین نمیکند: package.json، tsconfig.json و composer.json همگی یک نوع چیزند؛ فقط ابزارهای مختلف توافق کردهاند کلیدهای متفاوتی از آنها بخوانند.
۲. سه راه باز کردن، بر اساس سناریو
فقط یک نگاه سریع: آن را در مرورگر باز کنید. فایل را به پنجره Chrome یا Edge بکشید و مرورگر آن را همانطور که هست نمایش میدهد؛ اگر افزونه JSON Viewer نصب باشد، بهطور خودکار قالببندی و قابل جمعشدن میشود.
نیاز به ویرایش محتوا: از یک ویرایشگر استفاده کنید. VS Code، Sublime و Notepad++ همگی برجستهسازی نحو JSON و تطبیق براکت دارند و Shift + Alt + F در VS Code سند را قالببندی میکند. توجه کنید که Notepad ویندوز ممکن است هنگام ذخیره BOM اضافه کند و تغییرات پیکربندی شما اثر نکند؛ بهتر است از آن پرهیز کنید.
نمیخواهید چیزی نصب کنید، فقط میخواهید اعتبارسنجی کنید: از قالببند آنلاین JSON استفاده کنید. محتوا را بچسبانید و بیدرنگ شماره خط و ستون، محل خطا و درخت قابل جمعشدن را میبینید؛ پس از پایان نتیجه را کپی کنید. داده در مرورگر و بهصورت محلی پردازش میشود و به سرور فرستاده نمیشود.
فایلهای بزرگ (دهها مگابایت یا بیشتر): آنها را بهزور در ویرایشگر باز نکنید. باز کردن یک فایل JSON صد مگابایتی در VS Code چنان کند میشود که به انتخابهای زندگی خود شک کنید؛ نخست با خط فرمان ساختار را بررسی کنید:
# Look at the first 20 lines to confirm whether it is an array
head -n 20 data.json
# Use jq to list top-level keys without loading the whole file
jq -r 'keys[]' data.json | head
# Count the array length
jq 'length' data.json
۳. وقتی دوبار کلیک کردن متن آشوب باز میکند چه کنیم
سه علت، هر یک با مدیریت متفاوت:
۱. در واقع یک فایل باینری است (مثلاً یک آرشیو فشرده یا فایل پایگاهداده صادرشده با پسوند .json). با file data.json نوع واقعی را ببینید؛ آن را بهزور متن فرض نکنید.
۲. رمزگذاری UTF-8 نیست. متن چینی رمزگذاریشده با GBK در محیط UTF-8 آشوب میشود. از گزینه «Reopen with encoding» ویرایشگر یک بار GBK را امتحان کنید؛ اگر درست نمایش داده شد، آن را با UTF-8 ذخیره کنید.
۳. فایل رمزگذاری یا فشرده شده است. نشانه آن PK (zip) یا انبوهی علامت سؤال در ابتداست؛ این فایلها باید نخست از حالت فشرده خارج یا رمزگشایی شوند.
۴. چگونه پس از ویرایش مطمئن شویم چیزی نشکسته است
JSON هیچ تحملی ندارد: یک ویرگول جاافتاده، یک ویرگول اضافه یا یک گیومه جاافتاده و کل فایل از کار میافتد، و محل خطای گزارششده اغلب به خط بعدی اشاره میکند. بنابراین باید پس از ویرایش اعتبارسنجی کنید؛ به چشمان خود تکیه نکنید.
سه اقدام پرخطر ویرایش، به ترتیب میزان ایجاد دردسر:
| اقدام | نتیجه رایج | راه پیشگیری |
|---|---|---|
| چسباندن یک بلوک پیکربندی | ویرگول انتهایی یا نشانهگذاری تمامعرض میآورد | بیدرنگ پس از چسباندن یک بار قالببندی کنید |
| جابهجایی دستی ترتیب کلیدها | ویرگول اضافه یا جاافتاده | از فرمانهای جابهجایی خط ویرایشگر استفاده کنید؛ دستی دوباره تایپ نکنید |
| حذف آخرین عنصر یک آرایه | ,] باقی میگذارد |
پس از حذف بررسی کنید براکتها جفت شوند |
اعتبارسنجی ساده است: آن را در اعتبارسنج آنلاین بچسبانید و متن قرمز را ببینید، یا یک خط در خط فرمان اجرا کنید:
python3 -m json.tool config.json > /dev/null && echo OK
اگر OK چاپ شد، فایل معتبر است. اگر میخواهید انواع فیلدها را هم اعتبارسنجی کنید (مثلاً port باید عدد باشد و name نباید خالی باشد)، نوشتن یک JSON Schema بسیار مطمئنتر از چشم انسان است.
۵. .json چه تفاوتی با خویشاوندان نزدیکش دارد
| پسوند | تفاوت | آیا تجزیهکننده استاندارد میتواند بخواند |
|---|---|---|
.json |
JSON استاندارد | بله |
.jsonc |
کامنتهای // و /* */ را مجاز میداند |
نه؛ نخست باید کامنتها حذف شوند |
.json5 |
کامنت، تکگیومه، کلید بدون گیومه و ویرگول انتهایی را مجاز میداند | نه؛ به تجزیهکننده JSON5 نیاز است |
.jsonl / .ndjson |
هر خط یک JSON مستقل؛ کل فایل JSON معتبر نیست | نه، نه بهصورت کلی؛ باید خطبهخط خوانده شود |
از دیدن کامنت در tsconfig.json شگفتزده نشوید؛ در واقع آن را بهعنوان .jsonc مدیریت میکنند. همان محتوا را به JSON.parse بدهید و خطا میدهد. وقتی نیاز به تبدیل میان آنها دارید، از JSON5 به JSON برای حذف یککلیکی کامنتها و ویرگولهای انتهایی استفاده کنید.
۶. چه زمانی باید قالب ذخیرهسازی را عوض کرد
JSON مناسب سناریوهایی است که «ساختار ثابت نیست، انسان باید آن را بخواند و میان زبانها جابهجا میشود». اگر فایل از دهها مگابایت فراتر میرود، ساختار فیلد پایدار است و به پرسوجوهای شرطی نیاز دارید، ماندن روی JSON فقط دردسر ساختن برای خودتان است — به SQLite، Parquet یا پایگاهداده مهاجرت کنید؛ عملکرد خواندن/نوشتن چند مرتبه بزرگی تفاوت دارد. برای مقایسه دقیق، تجزیه و جریانسازی JSON بزرگ را ببینید.
پرسشهای متداول
چگونه فایل JSON بیشازحد بزرگی را بررسی کنم؟
آن را بهزور در ویرایشگر باز نکنید؛ باز کردن یک فایل JSON صد مگابایتی در VS Code چنان کند میشود که به انتخابهای زندگی خود شک کنید. نخست با خط فرمان ساختار را بررسی کنید: head -n 20 تأیید میکند آیا array است، jq -r 'keys[]' فقط کلیدهای سطح بالا را فهرست میکند و jq 'length' طول آرایه را میشمارد. هیچیک از این فرمانها کل فایل را بارگذاری نمیکند.
چرا ویرایشهای من در Notepad باعث میشود پیکربندی اثر نکند؟
Notepad ویندوز ممکن است هنگام ذخیره BOM اضافه کند و فایلی با BOM در تجزیه پیکربندی شکست میخورد، بنابراین محتوای ویرایششده هرگز اثر نمیکند. توصیه مقاله استفاده از ویرایشگرهایی مانند VS Code، Sublime یا Notepad++ است که برجستهسازی نحو JSON و تطبیق براکت دارند. اگر قبلاً از Notepad استفاده کردهاید، دوباره با «UTF-8 without BOM» ذخیره کنید و آزمون را تکرار کنید.
آیا میتوانم فایل JSON را مانند JSON5 رفتار کنم و کامنت اضافه کنم؟
نه — تجزیهکننده استاندارد کامنت را در فایل .json مجاز نمیداند و JSON.parse بیدرنگ خطا میدهد. کامنتها به فایلهای .jsonc یا .json5 تعلق دارند که تجزیهکننده متناظرشان میخواند. فایلهایی مانند tsconfig.json در واقع بهعنوان .jsonc مدیریت میشوند؛ همان محتوا را به JSON.parse بدهید و شکست میخورد.