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 последователности
Число 42 Цяло, с плаваща запетая, експоненциално
Булев 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 с анотации @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 vs XML: сравнение на формати

JSON и XML — два основни формата за предаване на структурирани данни. JSON печели по простота и производителност, XML — по строгост и валидация. Изборът между тях зависи от изискванията на проекта: за REST API по-често се избира JSON, за сложни документи със схеми — XML.

XML изисква затварящи тагове за всеки елемент, което увеличава размера на данните 2-3 пъти в сравнение с JSON. В същото време XML поддържа именни пространства, XSD схеми, атрибути и XSLT трансформация, което го прави по-мощен за задачи на документооборот и интеграция на корпоративни системи.

Характеристика JSON XML
Синтаксис Минималистичен, ключ-стойност Тагове, отварящи и затварящи тагове
Размер на данните Компактен 2-3 пъти по-голям от 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-ове. Анотацията @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. На практика размерът е ограничен от паметта на устройството и възможностите на парсера. За мобилни приложения се препоръчва да не надвишавате 1-2 MB на отговор, а за големи данни да използвате пагинация или поточна предавка.

Резюме

  • JSON — минималистичен текстов формат с шест типа данни за обмен на структурирана информация
  • Независимост от език — JSON парсери съществуват за всички популярни езици за програмиране
  • REST API използва JSON като стандартен формат за заявки и отговори в мобилни приложения
  • Парсинг се извършва с вградени инструменти: Gson/Moshi на Android, Codable на iOS
  • JSON е по-компактен от XML 2-3 пъти, но отстъпва на Protobuf по производителност
  • Четимост — синтаксис лесно четим и дебъгващ без специални инструменти
  • JSON Schema — допълнителен инструмент за валидация на структура и типове данни

Ще разработим мобилно приложение под ключ

IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.

Обсъдете проекта

Прочетете също