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. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође