JSON से Python - डेटाक्लास और Pydantic मॉडल ऑनलाइन बनाएं
JSON को Python dataclass, Pydantic BaseModel, या TypedDict में बदलें — टाइप इन्फरेंस, snake_case रूपांतरण, और तारीख पहचान — 100% ब्राउज़र में.
अक्सर पूछे जाने वाले प्रश्न
JSON से Python कनवर्टर क्या है?
JSON से Python कनवर्टर एक उपकरण है जो JSON डेटा से स्वचालित रूप से Python क्लास परिभाषाएँ बनाता है। फ़ील्ड नाम और टाइप एनोटेशन के साथ मैन्युअल रूप से dataclass या Pydantic मॉडल लिखने के बजाय, आप एक सैंपल JSON ऑब्जेक्ट पेस्ट करते हैं और टूल हर फ़ील्ड के लिए सही Python टाइप का अनुमान लगाता है। यह तीन आउटपुट फॉर्मेट सपोर्ट करता है: Python dataclass, Pydantic BaseModel, और TypedDict।
JSON से Python क्लासेस कैसे जनरेट करें?
बाईं ओर इनपुट फ़ील्ड में अपना JSON डेटा पेस्ट करें। टूल तुरंत दाईं ओर आउटपुट पैनल में Python कोड जनरेट करेगा। फॉर्मेट सिलेक्टर का उपयोग करके अपना पसंदीदा आउटपुट फॉर्मेट (dataclass, Pydantic BaseModel, या TypedDict) चुनें।
dataclass या Pydantic BaseModel में से क्या उपयोग करना चाहिए?
जब आपको टाइप एनोटेशन के साथ एक सरल, डिपेंडेंसी-फ्री डेटा कंटेनर चाहिए तो Python dataclass उपयोग करें। जब आपको रनटाइम डेटा वैलिडेशन, ऑटोमैटिक टाइप कोर्शन, JSON सीरियलाइज़ेशन और alias सपोर्ट चाहिए तो Pydantic BaseModel उपयोग करें। TypedDict का उपयोग तब करें जब आपको केवल डिक्शनरी-लाइक डेटा के लिए टाइप हिंट चाहिए।
क्या यह टूल Pydantic v2 को सपोर्ट करता है?
हाँ, यह टूल विशेष रूप से Pydantic v2 कोड जनरेट करता है। यह model_config = ConfigDict(...) सहित आधुनिक Pydantic v2 सिंटैक्स का उपयोग करता है।
क्या इस टूल का उपयोग करते समय मेरा JSON डेटा सुरक्षित है?
हाँ, पूरी तरह से। यह टूल क्लाइंट-साइड JavaScript का उपयोग करके आपके ब्राउज़र में सब कुछ प्रोसेस करता है। आपका JSON डेटा आपके कंप्यूटर से कभी नहीं निकलता — कोई सर्वर अपलोड, कोई API कॉल और कोई डेटा स्टोरेज नहीं है।
टूल null और optional फ़ील्ड को कैसे हैंडल करता है?
जब JSON फ़ील्ड में null वैल्यू होती है, तो टूल इसे Optional के रूप में चिह्नित करता है और डिफ़ॉल्ट None सेट करता है। आधुनिक Python सिंटैक्स (3.10+) में यह 'field_name: str | None = None' बन जाता है।
नेस्टेड JSON ऑब्जेक्ट्स को कैसे हैंडल किया जाता है?
प्रत्येक नेस्टेड JSON ऑब्जेक्ट को एक अलग नामित क्लास में बदला जाता है। उदाहरण के लिए, यदि आपके JSON में 'address' सब-ऑब्जेक्ट वाला 'user' ऑब्जेक्ट है, तो टूल 'User' और 'Address' दोनों क्लासेस बनाता है।
कोड उदाहरण
// JSON to Python dataclass/Pydantic generator
function jsonToPython(json, rootName = 'Root', format = 'dataclass') {
const classes = [];
function toPascalCase(str) {
return str.replace(/[-_\s]+(.)?/g, (_, c) => c ? c.toUpperCase() : '')
.replace(/^./, s => s.toUpperCase());
}
function toSnakeCase(str) {
return str.replace(/([A-Z])/g, '_$1').replace(/^_/, '').toLowerCase();
}
function inferType(value, name) {
if (value === null) return 'None';
if (typeof value === 'boolean') return 'bool';
if (typeof value === 'number') {
return Number.isInteger(value) ? 'int' : 'float';
}
if (typeof value === 'string') return 'str';
if (Array.isArray(value)) {
if (value.length === 0) return 'list[Any]';
return `list[${inferType(value[0], name)}]`;
}
if (typeof value === 'object') {
const className = toPascalCase(name);
const fields = Object.entries(value).map(([key, val]) => {
const pyType = inferType(val, key);
const fieldName = toSnakeCase(key);
if (format === 'pydantic' && fieldName !== key) {
return ` ${fieldName}: ${pyType} = Field(alias="${key}")`;
}
return ` ${fieldName}: ${pyType}`;
});
if (format === 'dataclass') {
classes.push(`@dataclass\nclass ${className}:\n${fields.join('\n')}`);
} else if (format === 'pydantic') {
classes.push(`class ${className}(BaseModel):\n${fields.join('\n')}`);
} else {
classes.push(`class ${className}(TypedDict):\n${fields.join('\n')}`);
}
return className;
}
return 'Any';
}
const parsed = JSON.parse(json);
inferType(parsed, rootName);
return classes.reverse().join('\n\n');
}
// Example
const json = '{"userName": "alice", "age": 30, "address": {"city": "NYC"}}';
console.log(jsonToPython(json, 'User', 'pydantic'));
// Output:
// class Address(BaseModel):
// city: str
//
// class User(BaseModel):
// user_name: str = Field(alias="userName")
// age: int
// address: Address