Junior
Шемаи JSON чист?
sobes.tech AI
Ҷавоб аз AI
JSON схемаи (JSON Schema) — ин стандартест лексикӣ дар асоси JSON барои тавсифи сохтор ва маҳдудиятҳои маълумот дар формат JSON. Имкон медиҳад, ки валидация, тавсиф ва ҳуҷҷатгузорӣ кардани маълумоти JSON.
Мақсадҳои асосӣ:
- Валидация: Санҷиши мувофиқати намунаи JSON бо сохтори муайян.
- Ҳуҷҷатгузорӣ: Тавсифи формати маълумоти JSON.
- Интераксия: Табодули метаданҳо байни системҳо.
Компонентҳои калидии JSON схем:
- Навъҳои маълумот:
string,number,integer,boolean,object,array,null. - Калидвожаҳои маҳдудиятҳо:
type: Навъи интизории маълумот.properties: Тавсифи хусусиятҳои объект. Ҳар хусусият дорои схемаи зер мебошад.required: Листи хусусиятҳои ҳатмӣ барои объект.items: Тавсифи унсурҳои массив.minLength/maxLength: Маҳдудиятҳои дарозӣ барои сатрҳо.minimum/maximum: Маҳдудиятҳо барои рақамҳо.pattern: Ифодаи муқарраршударо барои сатр.enum: Листи арзишҳои иҷозатдодашуда.allOf/anyOf/oneOf/not: Комбинацияҳои логикӣ барои схем.
- Калидвожаҳои метаданӣ:
title: Номи кӯтоҳи схем.description: Тавсифи муфассали схем.default: Арзиши пешфарз.
Масали JSON схем:
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "Идентификатори беназири корбар"
},
"username": {
"type": "string",
"minLength": 3
},
"isActive": {
"type": "boolean",
"default": true
}
},
"required": [
"id",
"username"
]
}
Масали маълумоти JSON, ки мувофиқ бо ин схем:
{
"id": 123,
"username": "testuser",
"isActive": false
}
Масали маълумоти JSON, ки номувофиқ бо ин схем:
{
"id": "abc" // Навъи нодуруст
// Ҳатмӣ нест кардани майдони "username"
}
Истифодаи JSON схем дар автоматизатсияи QA:
- Валидацияи ҷавобҳои API: Санҷиши мувофиқати ҷавобҳои JSON бо формати муайян.
- Валидацияи дархостҳо: Санҷиши маълумоти JSON воридотӣ пеш аз коркард.
- Таҳия кардани маълумоти тестӣ: Истифодаи схемаи барои эҷоди намунаҳои дуруст (ё нодуруст).
- Ҳуҷҷатгузорӣ: Тавсияшудаи худкор ҳуҷҷатгузории API.
Китобхонаҳо барои кор бо JSON схем дар забонҳои барномасозӣ (масалан, jsonschema барои Python, json-schema-validator барои Java) мавҷуданд.