JSON: چیست، ساختار داده و اصل کار

نویسنده: IT Sectr منتشر شده: 2026-03-08 زمان مطالعه: 8 دقیقه

JSON (JavaScript Object Notation) — یک فرمت متنی سبک برای تبادل داده است که بر اساس نحو اشیاء JavaScript ساخته شده است. در همه جا استفاده می‌شود: از REST API و فایل‌های پیکربندی گرفته تا ذخیره‌سازی داده‌ها در پایگاه‌های داده و برنامه‌های موبایل. به گزارش وبسایت رسمی JSON، این فرمت به زبان برنامه‌نویسی وابسته نیست و تقریباً توسط تمام پلتفرم‌های مدرن پشتیبانی می‌شود. JSON به استاندارد دوفاکتو برای انتقال داده بین کلاینت و سرور تبدیل شده است.

نکات اصلی

  • JSON — فرمت متنی سبک برای داده‌های ساختاریافته بر اساس نحو JavaScript
  • شش نوع داده — رشته، عدد، بولی، null، آرایه و شیء برای هر نوع ساختار
  • جهانی بودن — توسط همه زبان‌های برنامه‌نویسی و پلتفرم‌ها پشتیبانی می‌شود
  • REST API — فرمت اصلی تبادل داده در برنامه‌های وب و موبایل
  • قابلیت خواندن توسط انسان — نحو ساده به راحتی بدون ابزار خوانده و ویرایش می‌شود

JSON چیست؟

JSON — یک فرمت متنی برای نمایش داده‌های ساختاریافته بر اساس نحو JavaScript است. علیرغم ریشه‌اش در JavaScript، این فرمت کاملاً مستقل از زبان است — تجزیه‌گرها و سریال‌سازها برای همه زبان‌های برنامه‌نویسی محبوب وجود دارند.

تاریخچه JSON از اوایل دهه 2000 آغاز شد، زمانی که داگلاس کراکفورد زیرمجموعه‌ای از نحو JavaScript را برای تبادل داده جدا کرد. در سال 2013 این فرمت به عنوان ECMA-404 و بعداً به عنوان ISO/IEC 21778:2017 استاندارد شد. نام آن مخفف JavaScript Object Notation است.

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

JSON در کجا استفاده می‌شود

  • REST API — فرمت اصلی درخواست‌ها و پاسخ‌ها بین سرور و کلاینت
  • فایل‌های پیکربندی — package.json، tsconfig.json، .prettierrc
  • پایگاه‌های داده — MongoDB، PostgreSQL (JSONB)، Firebase Firestore
  • برنامه‌های موبایل — ذخیره تنظیمات، کش کردن داده‌ها
  • فناوری‌های وب — WebSocket، Server-Sent Events، localStorage

نحو و انواع داده JSON

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

اعداد در JSON می‌توانند صحیح یا اعشاری، مثبت یا منفی، با نماد نمایی باشند. مقادیر بولی با true و false نمایش داده می‌شوند و عدم وجود مقدار با null نشان داده می‌شود. آرایه‌ها مجموعه مرتبی از مقادیر از هر نوع را شامل می‌شوند، از جمله آرایه‌های تو در تو و اشیاء.

json
{
  "name": "JSON",
  "type": "text",
  "version": 2024,
  "flexible": true,
  "extensions": null,
  "languages": [
    "JavaScript",
    "Python",
    "Java"
  ],
  "nested": {
    "info": "پشتیبانی از تو در تویی"
  }
}
نوع مثال توضیح
رشته «متن» در گیومه دوگانه، با دنباله‌های escape
عدد ۴۲ صحیح، اعشاری، نمایی
بولی true true یا false — بدون گیومه
null null عدم وجود مقدار
شیء {} مجموعه نامرتب جفت‌های کلید-مقدار
آرایه [] لیست مرتبی از مقادیر

JSON در REST API

JSON فرمت اصلی تبادل داده برای REST API در توسعه موبایل و وب است. سرور JSON را در بدنه پاسخ ارسال می‌کند، کلاینت — در بدنه درخواست. هدر استاندارد Content-Type برای JSON application/json است.

REST APIهای مدرن از JSON برای انتقال همه انواع داده استفاده می‌کنند: از لیست‌های ساده گرفته تا ساختارهای تو در تو با روابط بین موجودیت‌ها. کتابخانه کلاینت (مثلاً Axios در JavaScript یا Retrofit در Android) به طور خودکار JSON را سریال و دسریال می‌کند و برنامه‌نویس را از تجزیه دستی بی‌نیاز می‌کند.

مزیت مهم JSON در REST API امکان انتقال جزئی داده (partial response) از طریق پارامترهای درخواست و همچنین پشتیبانی از منابع تو در تو بدون درخواست اضافی به سرور است.

تجزیه JSON در پلتفرم‌های موبایل

تجزیه JSON در پلتفرم‌های موبایل با ابزارهای داخلی انجام می‌شود. Android از کتابخانه‌های Gson (Google) یا Moshi (Square) استفاده می‌کند، iOS از پروتکل Codable با JSONDecoder. هر پلتفرم ابزارهای مناسبی برای تبدیل JSON به اشیاء بومی و بالعکس فراهم می‌کند.

JSON در Android (Kotlin)

در Android رویکرد استفاده از Gson یا Moshi محبوب است. کافی است data class با annotations @SerializedName تعریف کرده و fromJson را برای دسریال‌سازی فراخوانی کنید. کتابخانه به طور خودکار نام فیلدها در JSON را با فیلدهای کلاس مطابقت می‌دهد.

kotlin
import com.google.gson.Gson
import com.google.gson.annotations.SerializedName

data class User(
    @SerializedName("id") val id: Int,
    @SerializedName("name") val name: String,
    @SerializedName("email") val email: String
)

fun parseJson(jsonString: String): User {
    val gson = Gson()
    return gson.fromJson(jsonString, User::class.java)
}

JSON در iOS (Swift)

در iOS از پروتکل داخلی Codable با JSONDecoder استفاده می‌شود. ساختار داده به عنوان struct با پروتکل Codable اعلام می‌شود و سپس JSON با یک خط تجزیه می‌شود. JSONEncoder سریال‌سازی معکوس را انجام می‌دهد — شیء را برای ارسال به سرور به JSON تبدیل می‌کند.

swift
import Foundation

struct User: Codable {
    let id: Int
    let name: String
    let email: String
}

func parseJSON(from data: Data) throws -> User {
    let decoder = JSONDecoder()
    return try decoder.decode(User.self, from: data)
}

JSON در مقابل XML: مقایسه فرمت‌ها

JSON و XML — دو فرمت اصلی برای انتقال داده‌های ساختاریافته هستند. JSON در سادگی و عملکرد برتر است، XML در دقت و اعتبارسنجی. انتخاب بین آنها به نیازهای پروژه بستگی دارد: برای REST API بیشتر JSON انتخاب می‌شود، برای اسناد پیچیده با طرحواره‌ها — XML.

XML برای هر عنصر به تگ بسته نیاز دارد که اندازه داده را ۲-۳ برابر نسبت به JSON افزایش می‌دهد. در عین حال XML از فضاهای نام، طرحواره‌های XSD، ویژگی‌ها و تبدیل XSLT پشتیبانی می‌کند که آن را برای کارهای گردش اسناد و یکپارچه‌سازی سیستم‌های سازمانی قدرتمندتر می‌کند.

ویژگی JSON XML
نحو مینیمال، کلید-مقدار تگی، تگ‌های باز و بسته
اندازه داده فشرده ۲-۳ برابر بزرگتر از JSON
انواع داده شش نوع پایه فقط متن، انواع از طریق طرحواره
اعتبارسنجی ندارد، از طریق JSON Schema XSD — دقیق و بالغ
فضاهای نام ندارد پشتیبانی کامل namespace
سرعت تجزیه بالا پایین‌تر به دلیل پیچیدگی

مثال‌های کار با JSON

مثال‌ها عملیات معمول با JSON در توسعه موبایل را نشان می‌دهند: تجزیه پاسخ‌های API، ایجاد JSON برای ارسال و پردازش ساختارهای تو در تو. درک این الگوها برای هر توسعه‌دهنده برنامه‌های موبایل ضروری است.

سریال‌سازی شیء به JSON

در JavaScript JSON.stringify شیء را به رشته JSON تبدیل می‌کند. آرگومان دوم می‌تواند آرایه‌ای از کلیدها برای سریال‌سازی انتخابی یا تابع جایگزین باشد. آرگومان سوم فاصله برای قالب‌بندی را تعیین می‌کند.

typescript
interface Order {
  id: string;
  items: OrderItem[];
  total: number;
  createdAt: string;
}

const order: Order = {
  id: 'ord_001',
  items: [{ product: 'phone', quantity: 2 }],
  total: 1599.98,
  createdAt: '2026-07-03T10:00:00Z'
};

const jsonString = JSON.stringify(order, null, 2);

تجزیه JSON تو در تو

در Kotlin با کتابخانه Moshi اشیاء JSON تو در تو از طریق data classهای تو در تو پردازش می‌شوند. annotation @Json نام فیلد در JSON را مشخص می‌کند اگر با نام ویژگی کلاس متفاوت باشد. آرایه‌ها به صورت List با نوع عنصر نمایش داده می‌شوند.

kotlin
import com.squareup.moshi.Moshi
import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory

data class ApiResponse(
    val status: String,
    val data: List<Product>,
    val pagination: Pagination
)

data class Product(
    val id: Int,
    val title: String,
    val price: Double
)

data class Pagination(
    val page: Int,
    val total: Int
)

val moshi = Moshi.Builder()
    .add(KotlinJsonAdapterFactory())
    .build()

JSON Schema: اعتبارسنجی ساختار

JSON Schema — زبانی برای توصیف ساختار سند JSON، مشابه XSD برای XML است. با JSON Schema می‌توان فیلدهای اجباری، انواع داده، محدوده مقادیر، الگوهای رشته و ساختار تو در تو را تعیین کرد. اعتبارسنجی بر اساس طرحواره خطاهای داده را قبل از پردازش در برنامه تشخیص می‌دهد.

JSON Schema به طور گسترده در OpenAPI (Swagger) برای مستندسازی REST API، در فرم‌های اعتبارسنجی ورودی داده و در تست استفاده می‌شود. فایل طرحواره خود یک سند JSON است که امکان استفاده از تجزیه‌گرهای استاندارد JSON را برای خواندن آن فراهم می‌کند. اعتبارسنج‌های آنلاین و کتابخانه‌های همه زبان‌های برنامه‌نویسی محبوب وجود دارند.

در توسعه موبایل، JSON Schema برای اعتبارسنجی پاسخ‌های سرور در مرحله تست و بررسی فایل‌های پیکربندی استفاده می‌شود. کتابخانه‌هایی مانند network-validator در Android و json-schema-validator اجازه می‌دهند اعتبارسنجی مستقیماً در فرآیند توسعه تعبیه شود و از بروز خطا در مراحل اولیه جلوگیری کند.

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

JSON از چه نوع داده‌هایی پشتیبانی می‌کند؟

JSON از شش نوع پشتیبانی می‌کند: رشته (در گیومه دوگانه)، عدد (صحیح و اعشاری)، بولی (true/false)، null، شیء (جفت‌های کلید-مقدار در {}) و آرایه (لیست مقادیر در []). این برای هر نوع ساختار داده در برنامه‌ها کافی است.

آیا می‌توان در JSON از کامنت استفاده کرد؟

خیر، استاندارد JSON از کامنت پشتیبانی نمی‌کند. اگر به کامنت نیاز دارید، از JSON5 (JSON توسعه یافته) استفاده کنید یا فیلدی با توضیح اضافه کنید، مثلاً «_comment»: «توضیح». برخی ابزارها مانند VS Code از کامنت در فایل‌های JSON پیکربندی پشتیبانی می‌کنند، اما این یک توسعه غیراستاندارد است.

تفاوت JSON با JSONB در PostgreSQL چیست؟

JSONB — یک فرمت باینری ذخیره‌سازی JSON در PostgreSQL است. بر خلاف JSON متنی، JSONB سریع‌تر پردازش می‌شود، ایندکس‌گذاری (ایندکس‌های GIN) را پشتیبانی می‌کند و یکتایی کلیدها را تضمین می‌کند. در عین حال JSONB به دلیل افزودن متادیتا فضای بیشتری روی دیسک اشغال می‌کند.

چگونه صحت JSON را بررسی کنیم؟

برای بررسی سریع از JSONLint (jsonlint.com)، JSON.parse() داخلی در JavaScript با try-catch یا پلاگین‌های IDE استفاده کنید. اعتبارسنجی شامل بررسی صحت گیومه‌ها، بسته شدن براکت‌ها و مطابقت انواع است. برای طرحواره‌های پیچیده از JSON Schema Validator استفاده کنید.

حداکثر اندازه فایل JSON چقدر است؟

در مشخصات JSON محدودیتی وجود ندارد. در عمل اندازه با حافظه دستگاه و قابلیت‌های تجزیه‌گر محدود می‌شود. برای برنامه‌های موبایل توصیه می‌شود از ۱-۲ مگابایت در هر پاسخ تجاوز نکنید و برای داده‌های بزرگ از صفحه‌بندی یا انتقال جریانی استفاده کنید.

خلاصه

  • JSON — یک فرمت متنی مینیمال با شش نوع داده برای تبادل اطلاعات ساختاریافته
  • مستقل از زبان — تجزیه‌گرهای JSON برای همه زبان‌های برنامه‌نویسی محبوب وجود دارند
  • REST API از JSON به عنوان فرمت استاندارد درخواست‌ها و پاسخ‌ها در برنامه‌های موبایل استفاده می‌کند
  • تجزیه با ابزارهای داخلی انجام می‌شود: Gson/Moshi در Android، Codable در iOS
  • JSON متراکم‌تر از XML است (۲-۳ برابر) اما از نظر عملکرد از Protobuf پایین‌تر است
  • قابلیت خواندن توسط انسان — نحو به راحتی بدون ابزارهای خاص خوانده و اشکال‌زدایی می‌شود
  • JSON Schema — ابزار اضافی برای اعتبارسنجی ساختار و انواع داده

ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد

IT Sectr از سال 2017 برنامه‌های iOS و Android را برای استارتاپ‌ها و کسب‌وکارها ایجاد می‌کند. ما به شما مشاوره می‌دهیم و بهترین راه‌حل را پیشنهاد خواهیم کرد.

بحث درباره پروژه

همچنین بخوانید