Ի՞նչ է JSON-ը։ Պարզ ուղեցույց օրինակներով
JSON-ը (JavaScript Object Notation) կառուցվածքավորված տվյալներ գրելու պարզ տեքստային ձևաչափ է՝ օրինակ՝ հաճախորդ, պատվեր կամ ապրանքների ցանկ, որտեղ անունները զուգակցված են արժեքների հետ։ Այն հեշտ է մարդկանց համար կարդալու և ծրագրերի համար արտադրելու ու վերլուծելու։ Երբ հավելվածներն ու ծառայությունները տվյալներ են փոխանակում վեբով, JSON-ն ամենատարածված ձևաչափն է։
Ինչու է JSON-ը կարևոր AI-ով կառուցելիս
JSON-ի հետ կհանդիպեք անընդհատ, նույնիսկ եթե երբեք կոդ չեք գրում․
- API-ներ։ Երբ ձեր հավելվածի էկրանները տվյալներ են բեռնում իր backend-ից, կամ ձեր backend-ը կանչում է վճարման, էլ. փոստի կամ 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"
}
}
Կարդալը՝
- Գանգուր փակագծերը
{ }փաթաթում են օբյեկտ-ը՝ անունների և արժեքների զույգերի հավաքածու։ - Յուրաքանչյուր զույգ
"name": valueէ, իրար անջատված ստորակետներով։ - Քառակուսի փակագծերը
[ ]փաթաթում են զանգված-ը՝ հերթականությամբ ցուցակ։ - Օբյեկտները և զանգվածները կարող են գտնվել միմյանց մեջ, ինչպես
contact-ը ևextras-ը։
Արժեքների վեց տեսակ
JSON-ն ունի ընդամենը վեց տեսակի արժեք։ Այս փոքր ցանկն է մասամբ պատճառը, որ այն աշխատում է ամենուր։
| Տեսակ | Օրինակ | Նշումներ |
|---|---|---|
| Տող (string) | "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-ը․
- Ամրագրման ձևը ուղարկում է հավելվածի backend-ին՝
{ "service": "Haircut", "startsAt": "2026-10-03T14:00:00Z", "name": "Lena Park" }
- Backend-ը պահում է ամրագրումը տվյալների բազայում և պատասխանում է
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 | Postgres-ի երկուական JSON սյունակի տիպ, որը կարող է ինդեքսավորվել և հարցվել։ |
| 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-ում
Mythex-ում JSON-ը ձեռքով գրելու կարիք չունեք․ նկարագրում եք, ինչ ուզում եք, և agent-ը գրում է կոդը, որը ուղարկում և կարդում է այն։ Այնուամենայնիվ, օգտակար է ճանաչել այն․ երբ ինչ-որ բան խափանվում է, JSON սխալը չատում տեղադրելը agent-ին տալիս է ճշգրիտ հուշում։ Փաստաթղթերի REST API backend բաղադրատոմսը հենց սկզբից խնդրում է «հստակ JSON սխալներ», իսկ integrate any API բաղադրատոմսը ծածկում է արտաքին ծառայությունների կանչը։ Ավելի լայն պատկերի համար տես REST և GraphQL և ինչպես վրիպազերծել AI-ով կառուցված հավելվածը։
Հարցեր
Ի՞նչ է JSON-ը պարզ բառերով։
JSON-ը (JavaScript Object Notation) պարզ տեքստային ձևաչափ է կառուցվածքավորված տվյալները անունների և արժեքների տեսքով գրելու համար, օրինակ՝ «name»: «Lena»։ Գրեթե բոլոր վեբ API-ները օգտագործում են այն տվյալների փոխանակման համար, իսկ շատ հավելվածներ՝ կարգավորումների և պահված տվյալների համար։
Արդյո՞ք JSON-ը ծրագրավորման լեզու է։
Ոչ։ JSON-ը տվյալների ձևաչափ է, ոչ թե լեզու։ Այն ինքնուրույն ոչինչ չի կարող անել․ միայն նկարագրում է տվյալները։ Թեև ծագել է JavaScript-ից, գործնականում յուրաքանչյուր ծրագրավորման լեզու կարող է կարդալ և գրել այն։
Ո՞րն է տարբերությունը JSON-ի և JavaScript օբյեկտի միջև։
Նրանք նման են, բայց JSON-ն ավելի խիստ է։ JSON-ում յուրաքանչյուր բանալի պետք է լինի կրկնակի չակերտներում, տողերը օգտագործում են կրկնակի չակերտներ, մեկնաբանություններ չկան, վերջում ստորակետ չի թույլատրվում, իսկ արժեքները սահմանափակված են՝ տողեր, թվեր, true, false, null, օբյեկտներ և զանգվածներ։
Ինչու՞ է իմ JSON-ը ասում, որ անվավեր է։
Սովորական պատճառներն են՝ վերջին տարրից հետո ստորակետը, մեկ չակերտները կրկնակիների փոխարեն, բացակայող ստորակետը տարրերի միջև, չփակված փակագիծը կամ մեկնաբանությունը։ Տեղադրեք այն JSON վալիդատորում, և այն կցուցադրի տողը։