JSON से Python Dataclass और TypedDict
JSON को Python dataclass या TypedDict क्लास में बदलें, typing हिंट, Optional फ़ील्ड और निर्भरता क्रम में परिभाषित नेस्टेड क्लास के साथ। मुफ़्त, ब्राउज़र में।
क्लास इस क्रम में हैं कि निर्भरताएँ पहले आएँ। वैकल्पिक फ़ील्ड का डिफ़ॉल्ट None है; TypedDict आउटपुट NotRequired (Python 3.11+) इस्तेमाल करता है।
पूरी तरह आपके ब्राउज़र में चलता है। आपका डेटा कभी अपलोड नहीं होता।
संबंधित टूल्स
सभी देखेंJSON से Python क्या है?
JSON नमूने से टाइप किए गए Python क्लास बनाएँ: या तो @dataclass क्लास या TypedDict परिभाषाएँ। नेस्टेड ऑब्जेक्ट अपनी क्लास बनते हैं, जो उन्हें इस्तेमाल करने वाली क्लास से पहले लिखी जाती हैं ताकि मॉड्यूल सही ढंग से इम्पोर्ट हो।
JSON से Python का उपयोग कैसे करें
- JSON इनपुट में JSON नमूना पेस्ट करें (या उदाहरण लोड करें / फ़ाइल खोलें दबाएँ)।
- रूट टाइप का नाम तय करें (डिफ़ॉल्ट
Root)। - आउटपुट शैली चुनें:
@dataclassयाTypedDict। - बना हुआ Python कोड कॉपी करें या फ़ाइल के रूप में डाउनलोड करें।
उदाहरण
{"id":1,"name":"A","tags":["x"]} from dataclasses import dataclass
from typing import List
@dataclass
class Root:
id: int
name: str
tags: List[str] JSON से Python का उपयोग कब करें
स्क्रिप्ट, FastAPI कोड या टेस्ट में JSON पेलोड के लिए टाइप हिंट जोड़ने के लिए इसका उपयोग करें। Dataclass नेस्टेड dict को अपने आप नहीं बदलते; उसके लिए dacite या pydantic जैसी लाइब्रेरी इस्तेमाल करें, या सादे dict रखने के लिए TypedDict शैली चुनें।
JSON से Python कैसे काम करता है
नमूने को रिकर्सिव ढंग से पढ़ा जाता है और हर स्थान उन टाइप को इकट्ठा करता है जो उसने देखे। ऑब्जेक्ट के ऐरे एक टाइप में मिला दिए जाते हैं: जो कुंजी कुछ एलिमेंट में नहीं है वह वैकल्पिक बन जाती है, जो कुंजी कहीं null है वह nullable बन जाती है, दशमलव के साथ मिले पूर्णांक फ़्लोटिंग-पॉइंट टाइप बनते हैं, और बाकी हर मिश्रित टाइप डायनैमिक टाइप पर चला जाता है। नेस्टेड ऑब्जेक्ट अपने नामित टाइप बनते हैं (कुंजी का PascalCase, ऐरे कुंजियों का एकवचन: orders → Order), और नाम टकराने पर अंक जुड़ते हैं। Python आउटपुट int, float, str, bool, List[T], null के लिए Optional[T] और डायनैमिक मानों के लिए Any इस्तेमाल करता है। dataclass में ज़रूरी फ़ील्ड पहले आते हैं और वैकल्पिक फ़ील्ड को = None मिलता है; जो कुंजियाँ मान्य आइडेंटिफ़ायर नहीं हैं (या class जैसे कीवर्ड हैं) उन्हें snake_case में बदलकर # JSON key टिप्पणी के साथ रखा जाता है। TypedDict आउटपुट गायब कुंजियों को NotRequired से चिह्नित करता है और जब कोई कुंजी मान्य आइडेंटिफ़ायर न हो तो फ़ंक्शनल TypedDict("Name", {...}) सिंटैक्स पर चला जाता है।
सामान्य उपयोग मामले
- mypy या Pyright के लिए JSON API रिस्पॉन्स पर टाइप एनोटेशन लगाना
- कॉन्फ़िग फ़ाइल के लिए dataclass बनाना
- TypedDict से वेबहुक पेलोड का वर्णन करना
- pydantic पर जाने से पहले शुरुआती मॉडल बनाना
अक्सर पूछे जाने वाले प्रश्न
कौन-सा Python संस्करण चाहिए?
Dataclass आउटपुट Python 3.7+ पर चलता है। TypedDict आउटपुट NotRequired इस्तेमाल करता है, जो typing मॉड्यूल में Python 3.11 से उपलब्ध है (पुराने संस्करणों के लिए typing_extensions)।
कुछ फ़ील्ड का नाम क्यों बदला गया?
first-name या class जैसी कुंजियाँ मान्य एट्रिब्यूट नाम नहीं हैं, इसलिए वे first_name / class_ बन जाती हैं और टिप्पणी में मूल JSON कुंजी दिखती है।
क्या मैं JSON को सीधे dataclass में लोड कर सकता हूँ?
Root(**data) सपाट डेटा के लिए काम करता है; नेस्टेड ऑब्जेक्ट dict ही रहते हैं जब तक आप उन्हें खुद न बदलें या हेल्पर लाइब्रेरी इस्तेमाल न करें।