JSON Schema: मूल बातों से प्रोडक्शन तक
Keywords बहुत हैं, पर रोज़ केवल एक दर्जन इस्तेमाल होते हैं। type/properties/required/$ref सही कर लें, error messages अच्छे संभालें, और आप असली मामलों का अस्सी प्रतिशत कवर कर लेंगे।
JSON Schema से अपने डेटा का आकार बताएँ, मौखिक समझौतों को निष्पादन योग्य validation में बदलें, और बदले में इसे TypeScript types और form generation चलाने दें।
7 लेखKeywords बहुत हैं, पर रोज़ केवल एक दर्जन इस्तेमाल होते हैं। type/properties/required/$ref सही कर लें, error messages अच्छे संभालें, और आप असली मामलों का अस्सी प्रतिशत कवर कर लेंगे।
Types और schemas में से हर एक एक हिस्सा कवर करता है: एक compile time पर, एक runtime पर। सवाल यह नहीं कि किसे चुनें, बल्कि यह कि दोनों को स्वतः sync में कैसे रखें।
Generated schemas अक्सर मान्य डेटा रोक देते हैं। जानें कि अधिक समृद्ध नमूनों से बदतर schemas क्यों बनते हैं, फिर workflow: multi-record sampling, semantic completion, error pinpointing.
$ref दोबारा उपयोग हल करता है, allOf और oneOf composition, और दोनों को एक साथ रखना वहीं टूटता है। इसमें $id, $defs, conditionals, recursion, bundling और debugging शामिल हैं।
Validator machine errors देता है; उपयोगकर्ता जानना चाहता है कि कौन-सा input box गलत है। इसमें Ajv errors array, instancePath बनाम schemaPath, grouping और wording शामिल हैं।
वैलिडेशन पास होना साफ़ डेटा की गारंटी नहीं है। Pydantic डिफ़ॉल्ट रूप से अनजान फ़ील्ड को नज़रअंदाज़ करता है, Zod उन्हें हटा देता है, Ajv छोड़ देता है — झूठे पैरामीटर और टाइपो कुंजियाँ चुपचाप निकल जाती हैं। यह लेख मौन स्वीकृति के तीन रूप दिखाता है और पूरे तरीके देता है: ऑब्जेक्ट बंद करना, कोअर्सन नियंत्रित करना, हर नेस्टिंग स्तर कसना।
स्कीमा लिखते ही खत्म नहीं होता — वहीं से गिरावट शुरू होती है। एक टाइपो चुपचाप वैलिडेशन ढीला कर देता है, एक रिफैक्टरिंग सारे फ़िक्सचर तोड़ देती है। यह गाइड एक चलाने योग्य कॉन्ट्रैक्ट टेस्टिंग सिस्टम की कली खोलती है: पॉज़िटिव, नेगेटिव और स्नैपशॉट फ़िक्सचर, स्कीमा का अपना lint, पुनःउपयोग के साथ एक बार कंपाइल, और CI के चार गेट जो कॉन्ट्रैक्ट तोड़ने वाले बदलावों को लाल बिल्ड में बदल देते हैं।