ToolDeck

JSON Schema Validator

JSON डेटा को JSON Schema (Draft 7) के विरुद्ध सत्यापित करें

उदाहरण देखें

JSON डेटा

JSON Schema

स्थानीय रूप से चलता है · सीक्रेट पेस्ट करना सुरक्षित है
स्थानीय रूप से चलता है · सीक्रेट पेस्ट करना सुरक्षित है

JSON Schema सत्यापन क्या है?

JSON Schema सत्यापन वह प्रक्रिया है जिसमें जाँचा जाता है कि कोई JSON दस्तावेज़ एक JSON Schema में परिभाषित संरचनात्मक और मान-संबंधी बाधाओं के अनुरूप है या नहीं। Schema स्वयं एक JSON दस्तावेज़ होता है जो आपके डेटा की अपेक्षित संरचना का वर्णन करता है: कौन सी properties आवश्यक हैं, उनके प्रकार क्या होने चाहिए, संख्याओं की अनुमत सीमाएँ, string patterns, array की लंबाइयाँ, और अन्य बाधाएँ। JSON Schema विशिष्टता json-schema.org पर maintain होती है और IETF drafts की श्रृंखला के रूप में प्रकाशित होती है — Draft 7 और Draft 2020-12 सबसे व्यापक रूप से अपनाए गए हैं।

जहाँ सामान्य JSON सत्यापन केवल सिंटैक्स जाँचता है (क्या brackets सही हैं? क्या strings quoted हैं?), schema सत्यापन इससे आगे जाता है। यह ऐसे प्रश्नों के उत्तर देता है जैसे: क्या इस API के प्रतिक्रिया में एक "id" फ़ील्ड है जो हमेशा integer होती है? क्या "status" फ़ील्ड तीन अनुमत मानों में से एक है? क्या nested ऑब्जेक्ट सही आकार के हैं? इस प्रकार की संरचनात्मक जाँच उन त्रुटियों को पकड़ती है जिन्हें सिंटैक्स जाँच पूरी तरह चूक जाती है — क्योंकि सिंटैक्स की दृष्टि से वैध JSON आपके एप्लिकेशन के लिए अर्थगत रूप से गलत हो सकता है।

JSON Schema का उपयोग OpenAPI/Swagger परिभाषाओं, कॉन्फ़िगरेशन फ़ाइल सत्यापन, फ़ॉर्म सत्यापन, डेटाबेस document बाधाओं और स्वचालित परीक्षण में किया जाता है। Ajv (JavaScript), jsonschema (Python), और check-jsonschema (CLI) जैसे tools विशिष्टता को लागू करते हैं ताकि आप प्रोग्रामेटिक रूप से डेटा सत्यापित कर सकें। यह ऑनलाइन सत्यापक आपको schema और डेटा दस्तावेज़ दोनों चिपकाने देता है और कोई लाइब्रेरी इंस्टॉल किए बिना तुरंत अनुरूपता जाँचता है।

ऑनलाइन JSON Schema Validator का उपयोग क्यों करें?

Schemas लिखना और सत्यापन त्रुटियों को हाथ से डीबग करना धीमा है। एक ऑनलाइन JSON Schema Validator आपको तत्काल प्रतिक्रिया देता है कि आपका डेटा आपके schema से मेल खाता है या नहीं, साथ ही स्पष्ट त्रुटि संदेश भी जो सटीक वह property बताते हैं जो विफल हुई।

तत्काल सत्यापन प्रतिक्रिया
अपना schema और डेटा चिपकाएँ और रीयल टाइम में सत्यापन परिणाम देखें। प्रत्येक त्रुटि JSON path और वह विशिष्ट बाधा दर्शाती है जो विफल हुई, ताकि आप validator लाइब्रेरी का आउटपुट पढ़े बिना समस्याएँ ठीक कर सकें।
🔒
Privacy-First — सब कुछ Browser में
आपका JSON डेटा कभी आपके ब्राउज़र से बाहर नहीं जाता। सभी सत्यापन JavaScript में स्थानीय रूप से चलता है। कोई सर्वर नहीं, कोई लॉग नहीं, कोई डेटा संग्रहण नहीं। ऐसे schemas के लिए सुरक्षित जो आंतरिक APIs का वर्णन करते हैं या स्वामित्व वाले फ़ील्ड नाम रखते हैं।
🎯
Draft-aware सत्यापन
सत्यापक Draft 7 schema keywords संभालता है जिनमें type, required, properties, enum, pattern, minimum/maximum, items, anyOf, oneOf, allOf, और additionalProperties शामिल हैं। अपने build pipeline या test suite में जोड़ने से पहले यहाँ अपना schema परखें।
📋
कोई खाता या इंस्टॉलेशन आवश्यक नहीं
पेज खोलें, अपना JSON चिपकाएँ, और सत्यापित करें। कोई npm install नहीं, कोई pip package नहीं, कोई Docker image नहीं। तब उपयोगी जब आपको किसी ऐसी मशीन पर त्वरित schema जाँच करनी हो जहाँ आप विकास tools इंस्टॉल नहीं कर सकते।

JSON Schema सत्यापन के उपयोग के मामले

API अनुबंध परीक्षण
अपने OpenAPI spec में परिभाषित schema के विरुद्ध API प्रतिक्रियाएँ सत्यापित करें। उत्पादन तक पहुँचने से पहले breaking changes पकड़ें — जैसे कोई फ़ील्ड integer से string में बदलना।
कॉन्फ़िगरेशन फ़ाइल सत्यापन
CI/CD pipelines, Kubernetes manifests, या एप्लिकेशन settings के लिए JSON कॉन्फ़िग फ़ाइलें commit करने से पहले जाँचें कि वे अपेक्षित schema से मेल खाती हैं। गुम या गलत टाइप की गई keys के कारण deployment विफलताएँ रोकें।
DevOps pipeline गेट
अनुबंध का उल्लंघन करने वाले payloads को अस्वीकार करने के लिए CI चरण के रूप में schema सत्यापन जोड़ें। यह Terraform variable files, GitHub Actions inputs, या automation द्वारा उपभोग किए जाने वाले किसी भी संरचित JSON के लिए काम करता है।
QA और परीक्षण डेटा समीक्षा
सत्यापित करें कि परीक्षण fixtures और mock डेटा फ़ाइलें उसी schema के अनुरूप हैं जो आपका एप्लिकेशन अपेक्षित करता है। असंगत test data false positive test results का एक आम कारण है।
डेटा pipeline अंतर्ग्रहण
डेटा pipeline के प्रवेश बिंदु पर आने वाले JSON रिकॉर्ड सत्यापित करें। Schema सत्यापन malformed events को आपके data warehouse तक पहुँचने से पहले filter करता है, जिससे बाद में सफाई की लागत कम होती है।
JSON Schema सिंटैक्स सीखना
Schema keywords के साथ इंटरैक्टिव रूप से प्रयोग करें। एक schema लिखें, परीक्षण डेटा चिपकाएँ, और देखें कि कौन सी बाधाएँ सफल होती हैं या विफल होती हैं। हर बार टर्मिनल से script चलाने की तुलना में तेज़।

JSON Schema Keywords संदर्भ

एक JSON Schema keywords से बना होता है जो प्रत्येक सत्यापित डेटा पर एक बाधा लागू करता है। नीचे दी गई तालिका Draft 7 और बाद के संस्करणों में सबसे अधिक उपयोग किए जाने वाले keywords सूचीबद्ध करती है। प्रत्येक keyword को उसी schema ऑब्जेक्ट में अन्य keywords के साथ जोड़ा जा सकता है।

Keywordउद्देश्यउदाहरण
typeRestricts the data type"type": "string"
propertiesDefines expected object keys and their schemas"properties": { "name": { "type": "string" } }
requiredLists mandatory properties"required": ["id", "name"]
itemsSchema for array elements"items": { "type": "number" }
enumRestricts value to a fixed set"enum": ["active", "inactive"]
patternRegex constraint on strings"pattern": "^[A-Z]{2}\\d{4}$"
minimum / maximumNumeric range bounds"minimum": 0, "maximum": 100
minLength / maxLengthString length bounds"minLength": 1, "maxLength": 255
$refReuses another schema by URI"$ref": "#/$defs/address"
additionalPropertiesControls extra keys in objects"additionalProperties": false
anyOf / oneOf / allOfCombines multiple schemas logically"anyOf": [{ "type": "string" }, { "type": "null" }]
if / then / elseConditional schema application"if": { "properties": { "type": { "const": "email" } } }

JSON Schema Draft तुलना: Draft 7 बनाम 2019-09 बनाम 2020-12

JSON Schema कई draft संस्करणों से होकर गुज़रा है। Draft 7 (2018 में प्रकाशित) tooling में सबसे व्यापक रूप से समर्थित है। Draft 2019-09 ने $defs (definitions की जगह), unevaluatedProperties, और $recursiveRef प्रस्तुत किए। Draft 2020-12 (नवीनतम स्थिर रिलीज़) ने $recursiveRef को $dynamicRef से बदला और tuple सत्यापन के लिए prefixItems प्रस्तुत किया। draft चुनते समय, जाँचें कि आपकी validation library उसे समर्थित करती है। Ajv तीनों drafts का समर्थन करता है। Python की jsonschema library संस्करण 4.0 से 2020-12 तक का समर्थन करती है।

विशेषताDraft 7Draft 2019-09Draft 2020-12
$schema URIdraft-07/schema#2019-09/schema2020-12/schema
if / then / elseYesYesYes
$defs (definitions)definitions$defs$defs
$ref alongside keysNo (sibling ignored)YesYes
$dynamicRefNoNo ($recursiveRef)Yes
prefixItemsNo (use items array)No (use items array)Yes
unevaluatedPropertiesNoYesYes
$vocabularyNoYesYes

Code उदाहरण

ये उदाहरण दिखाते हैं कि JSON को प्रोग्रामेटिक रूप से किसी schema के विरुद्ध कैसे सत्यापित करें। प्रत्येक अपने language ecosystem की एक popular लाइब्रेरी का उपयोग करता है।

JavaScript (Ajv)
import Ajv from 'ajv';

const ajv = new Ajv();

const schema = {
  type: 'object',
  properties: {
    name: { type: 'string', minLength: 1 },
    age: { type: 'integer', minimum: 0 },
    email: { type: 'string', format: 'email' }
  },
  required: ['name', 'email'],
  additionalProperties: false
};

const data = { name: 'Alice', age: 30, email: 'alice@example.com' };

const validate = ajv.compile(schema);
const valid = validate(data);
console.log(valid);          // → true
console.log(validate.errors); // → null

// Invalid data — missing required "email"
validate({ name: 'Bob', age: 25 });
console.log(validate.errors);
// → [{ instancePath: '', keyword: 'required', params: { missingProperty: 'email' } }]
Python (jsonschema)
from jsonschema import validate, ValidationError

schema = {
    "type": "object",
    "properties": {
        "name": {"type": "string", "minLength": 1},
        "age": {"type": "integer", "minimum": 0},
        "tags": {
            "type": "array",
            "items": {"type": "string"},
            "uniqueItems": True
        }
    },
    "required": ["name"]
}

# Valid data
validate(instance={"name": "Alice", "age": 30, "tags": ["admin"]}, schema=schema)
# → No exception raised

# Invalid data — wrong type for "age"
try:
    validate(instance={"name": "Alice", "age": "thirty"}, schema=schema)
except ValidationError as e:
    print(e.message)
    # → 'thirty' is not of type 'integer'
    print(e.json_path)
    # → $.age
Go (santhosh-tekuri/jsonschema)
package main

import (
    "fmt"
    "strings"
    "github.com/santhosh-tekuri/jsonschema/v5"
)

func main() {
    schemaJSON := `{
        "type": "object",
        "properties": {
            "id": { "type": "integer" },
            "status": { "enum": ["active", "inactive"] }
        },
        "required": ["id", "status"]
    }`

    compiler := jsonschema.NewCompiler()
    compiler.AddResource("schema.json", strings.NewReader(schemaJSON))
    schema, _ := compiler.Compile("schema.json")

    // Valid data
    data := map[string]interface{}{"id": 1, "status": "active"}
    err := schema.Validate(data)
    fmt.Println(err) // → <nil>

    // Invalid — missing "status"
    bad := map[string]interface{}{"id": 2}
    err = schema.Validate(bad)
    fmt.Println(err) // → validation failed: missing properties: 'status'
}
CLI (check-jsonschema)
# Install via pip
pip install check-jsonschema

# Validate a file against a schema
check-jsonschema --schemafile schema.json data.json
# → ok -- validation done

# Validate against a remote schema (e.g., GitHub Actions workflow)
check-jsonschema --builtin-schema vendor.github-workflows my-workflow.yml

# Validate multiple files at once
check-jsonschema --schemafile schema.json file1.json file2.json file3.json

अक्सर पूछे जाने वाले प्रश्न

JSON सत्यापन और JSON Schema सत्यापन में क्या अंतर है?
JSON सत्यापन जाँचता है कि कोई string वैध JSON सिंटैक्स है: सही रूप से nested brackets, quoted keys, कोई trailing comma नहीं। JSON Schema सत्यापन एक अतिरिक्त चरण है जो जाँचता है कि पार्स किया गया JSON डेटा एक संरचनात्मक अनुबंध से मेल खाता है: सही प्रकार, आवश्यक फ़ील्ड उपस्थित, मान अनुमत सीमाओं में। Schema लागू करने से पहले आपको वैध JSON चाहिए, लेकिन वैध JSON फिर भी schema सत्यापन विफल कर सकता है।
मुझे कौन सा JSON Schema draft उपयोग करना चाहिए?
Draft 7 सबसे सुरक्षित डिफ़ॉल्ट है। इसे languages में सबसे व्यापक library समर्थन प्राप्त है और यह अधिकांश projects को आवश्यक keywords को कवर करता है: type, properties, required, enum, pattern, anyOf, oneOf, allOf, और $ref। Draft 2020-12 का उपयोग करें यदि आपको tuple सत्यापन के लिए prefixItems, विस्तारणीय schemas के लिए $dynamicRef, या strict object shapes के लिए unevaluatedProperties जैसी सुविधाओं की आवश्यकता है। अपग्रेड करने से पहले draft समर्थन की पुष्टि के लिए अपनी validator library का दस्तावेज़ देखें।
JSON Schema में $ref कैसे काम करता है?
$ref keyword आपको किसी अन्य schema को दोहराने के बजाय URI द्वारा संदर्भित करने देता है। "$ref": "#/$defs/address" जैसा मान उसी दस्तावेज़ के $defs अनुभाग में परिभाषित schema की ओर इंगित करता है। आप "$ref": "https://example.com/schemas/address.json" के साथ बाहरी फ़ाइलों को भी संदर्भित कर सकते हैं। Draft 7 में, $ref उसी ऑब्जेक्ट में सभी sibling keywords की जगह लेता है। Draft 2019-09 और बाद में, sibling keywords $ref के साथ-साथ लागू होते हैं।
anyOf, oneOf, और allOf में क्या अंतर है?
allOf के लिए आवश्यक है कि डेटा array में प्रत्येक sub-schema से मेल खाए। anyOf के लिए कम से कम एक sub-schema से मेल खाना आवश्यक है। oneOf के लिए ठीक एक sub-schema से मेल खाना आवश्यक है और विफल हो जाता है यदि डेटा शून्य या एक से अधिक से मेल खाता है। nullable फ़ील्ड के लिए, type और null के साथ anyOf सामान्य है: {"anyOf": [{"type": "string"}, {"type": "null"}]}। oneOf का उपयोग तब करें जब sub-schemas परस्पर अनन्य हों, जैसे tagged unions।
क्या JSON Schema nested ऑब्जेक्ट और arrays को सत्यापित कर सकता है?
हाँ। nested ऑब्जेक्ट keys के लिए schemas परिभाषित करने के लिए properties keyword का उपयोग करें, और एक schema परिभाषित करने के लिए items keyword का उपयोग करें जो प्रत्येक array element को पूरा करना होगा। आप इन्हें किसी भी गहराई तक nest कर सकते हैं। उन arrays के लिए जहाँ प्रत्येक position का अलग schema है (tuples), Draft 2020-12 में prefixItems या Draft 7 में items के array रूप का उपयोग करें।
क्या इस tool में चिपकाया गया डेटा सर्वर को भेजा जाता है?
नहीं। सत्यापक पूरी तरह से आपके ब्राउज़र में JavaScript का उपयोग करके चलता है। आपका JSON डेटा और schema किसी भी सर्वर को कभी प्रेषित नहीं किए जाते। आप इसे tool उपयोग करते समय अपने ब्राउज़र का network inspector खोलकर सत्यापित कर सकते हैं।
CI/CD pipeline में JSON Schema को कैसे सत्यापित करें?
check-jsonschema (Python/pip) या ajv-cli (Node.js/npm) जैसे CLI validator का उपयोग करें। दोनों एक schema फ़ाइल और एक या अधिक डेटा फ़ाइलें तर्क के रूप में स्वीकार करते हैं। अपने CI कॉन्फ़िग में सत्यापन कमांड एक चरण के रूप में जोड़ें। यदि सत्यापन विफल होता है, तो प्रक्रिया non-zero code के साथ समाप्त होती है जो pipeline को रोकती है। GitHub Actions के लिए, आप check-jsonschema action सीधे भी उपयोग कर सकते हैं।