Какво е JSON? Ръководство с примери на прост език
JSON (JavaScript Object Notation) е прост текстов формат за записване на структурирани данни – неща като клиент, поръчка или списък с продукти – като двойки имена и стойности. Лесен е за четене от хора и лесен за създаване и обработка от програми. Когато приложения и услуги обменят данни през уеба, JSON е далеч най-често срещаният формат.
Защо JSON е важен, когато създаваш с AI
Ще се сблъскаш с JSON постоянно, дори и никога да не пишеш код:
- API. Когато екраните на приложението ти зареждат данни от бекенда му или бекендът извиква услуга за плащания, имейли или AI, данните обикновено пътуват като JSON. Виж какво е API.
- Файлове с настройки. Много конфигурационни файлове на проекти са JSON – например
package.json, който изброява зависимостите на JavaScript проект. - Бази данни. Postgres може да съхранява JSON в колона (типът
jsonb) за данни, които не се вписват в подредени редове и колони. Виж какво е Postgres. - Резултат от AI. Когато искаш AI модел да върне нещо, което програма може да използва – списък с етикети, извлечени полета от фактура – обикновено поискаш JSON.
- Съобщения за грешки и логове. Много грешки идват като JSON и четенето им често е най-бързият начин да разбереш какво се е объркало.
Да можеш да четеш JSON, ти позволява да провериш какво всъщност е получило приложението ти, да забележиш липсващо поле и да опишеш проблемите точно пред AI инструмента.
Ежедневна аналогия
Представи си хартиен формуляр: Име: ____, Телефон: ____, Бюлетин: ☐ да ☐ не. Всеки запис е етикет с изписана до него стойност. JSON е този формуляр, записан като текст, в строго оформление, което компютърът може да прочете, без да гадае. И като формулярите, JSON може да има раздели в раздели (блок с адрес с улица, град и пощенски код) и списъци (няколко телефонни номера).
Как изглежда JSON
Ето една резервация в JSON:
{
"id": 5001,
"customer": "Lena Park",
"service": "Haircut",
"startsAt": "2026-10-03T14:00:00Z",
"price": 35.5,
"paid": false,
"notes": null,
"extras": ["beard trim", "hot towel"],
"contact": {
"email": "lena@example.com",
"phone": "+44 20 7946 0000"
}
}
Как се чете:
- Фигурните скоби
{ }обграждат обект – набор от двойки име/стойност. - Всяка двойка е
"име": стойност, разделени със запетаи. - Квадратните скоби
[ ]обграждат масив – подреден списък. - Обектите и масивите могат да са вложени един в друг, както са
contactиextras.
Шестте вида стойности
JSON има само шест типа стойности. Този кратък списък е голяма част от причината, поради която работи навсякъде.
| Тип | Пример | Бележки |
|---|---|---|
| Низ (текст) | "Lena Park" | Винаги двойни кавички |
| Число | 35.5, -2, 1e6 | Без кавички; без валутни символи |
| Булева стойност | true, false | Малки букви, без кавички |
| Null | null | „Няма стойност“ |
| Обект | { "city": "Leeds" } | Именувани стойности |
| Масив | [1, 2, 3] | Подреден списък; елементите могат да са от всеки тип |
Тип за дата няма. Датите се записват като низове, обикновено във формата ISO 8601, показан по-горе (2026-10-03T14:00:00Z, където Z означава UTC). Споразумението за този формат предотвратява цяла категория грешки с часовите пояси.
Строгите правила (оттам идват грешките)
JSON е по-малко снизходителен, отколкото изглежда. Всички тези са невалидни:
{ name: "Lena" } ← ключ без двойни кавички
{ 'name': 'Lena' } ← единични кавички
{ "a": 1, "b": 2, } ← запетая след последния елемент
{ "a": 1 "b": 2 } ← липсваща запетая
{ "a": 1 // comment } ← коментарите не са позволени
Повечето грешки „Unexpected token“, които ще видиш, са от един от тези видове. Валидаторът или форматиращият инструмент за JSON ще ти покаже точния ред.
Примерен случай: JSON през приложение
Клиент резервира подстригване в приложение за салон. Ето къде се появява JSON:
- Формулярът за резервация изпраща това към бекенда на приложението:
{ "service": "Haircut", "startsAt": "2026-10-03T14:00:00Z", "name": "Lena Park" }
- Бекендът записва резервацията в базата данни и отговаря със статус
201 Createdи:
{ "id": 5001, "status": "confirmed" }
- Ако часът вече е бил зает, вместо това може да отговори със статус
409 Conflictи:
{ "error": "slot_taken", "message": "That time was just booked. Please pick another." }
Страницата чете status или error и показва правилното съобщение. Ако вместо това страницата показва празен екран, отварянето на инструментите за разработчици на браузъра (раздел Network) ще ти покаже този JSON – често това е най-бързата следа към това, което се е объркало.
Ключови термини
| Термин | Значение |
|---|---|
| Ключ (key) | Името в двойка име/стойност, например "email". |
| Parse (разчитане) | Превръщане на JSON текст в данни, които програмата може да използва. |
| Serialize / stringify | Превръщане на данни в JSON текст за изпращане или съхранение. |
| Payload (полезен товар) | Данните, изпратени в заявка или отговор. |
| Schema (схема) | Описание на формата, който данните трябва да имат – кои полета, какви типове. JSON Schema е стандартен начин да се напише такова описание. |
| JSONB | Двоичният JSON колонен тип на Postgres, който може да се индексира и търси. |
| NDJSON / JSON Lines | По един JSON обект на ред, често срещано при логове и потоци от данни. |
Чести погрешни схващания
- „JSON е JavaScript.“ Произлиза от синтаксиса на JavaScript, но не е зависим от език; Python, Java, C#, Go и останалите го четат.
- „Числата в кавички са наред.“
"35"е низ, а не число. Смесването им води до грешки, например"35" + "5"става"355". Парите често е по-добре да се пазят като цели стотинки (3550), за да се избегнат проблеми със закръгляването. - „JSON е сигурен, защото е просто данни.“ JSON може да носи всичко, включително тайни. Не слагай API ключове в JSON, който се изпраща към браузъра.
- „Сложи всичко в JSON колона.“ Удобно е за гъвкави допълнения, но данните, по които търсиш, филтрираш или свързваш, обикновено трябва да са в нормални колони.
- „AI винаги връща валиден JSON.“ Моделите могат да добавят допълнителен текст или да счупят формата. Много доставчици предлагат режим със структуриран изход; кодът ти все пак трябва да провери какво идва обратно.
Какво да поискаш от AI инструмента
- „Покажи ми пример за JSON, който връща този endpoint.“
- „Връщай грешките като JSON с код
errorи четимо за хората съобщениеmessage.“ - „Съхранявай датите като низове ISO 8601 в UTC и превръщай в местно време само при показване на екрана.“
- „Съхранявай цените като цели числа в стотинки.“
- „Валидирай входящия JSON на сървъра и отхвърляй заявки с липсващи или грешни по тип полета.“
- „Когато извикваш AI модела, поискай JSON в точно този формат и го провери, преди да го използваш.“
JSON в Mythex
Не е нужно да пишеш JSON ръчно в Mythex – описваш какво искаш, а агентът пише кода, който го изпраща и чете. Все пак помага да го разпознаваш: когато нещо се счупи, поставянето на JSON грешката в чата дава на агента точна следа. Рецептата REST API бекенд в документацията изисква „ясни JSON грешки“ от самото начало, а рецептата интеграция с всяко API описва извикване на външни услуги. За по-голямата картина виж REST срещу GraphQL и как да поправиш приложение, създадено с AI.
Въпроси
Какво е JSON, с прости думи?
JSON (JavaScript Object Notation) е текстов формат за записване на структурирани данни като имена и стойности, например "name": "Lena". Почти всяко уеб API го използва, за да изпраща данни напред-назад, а много приложения го ползват за настройки и съхранени данни.
JSON език за програмиране ли е?
Не. JSON е формат за данни, а не език. Сам по себе си не може да прави нищо – само описва данни. Макар да произлиза от JavaScript, почти всеки език за програмиране може да го чете и записва.
Каква е разликата между JSON и JavaScript обект?
Приличат си, но JSON е по-строг. В JSON всеки ключ трябва да е в двойни кавички, низовете също са в двойни кавички, няма коментари, няма запетая след последния елемент, а стойностите са ограничени до низове, числа, true, false, null, обекти и масиви.
Защо моят JSON е обявен за невалиден?
Обичайните причини са запетая след последния елемент, единични кавички вместо двойни, липсваща запетая между елементите, незатворена скоба или коментар. Постави го във валидатор за JSON и той ще посочи реда.