ToolDeck

JSON থেকে Python

JSON থেকে Python dataclass তৈরি করুন

একটি উদাহরণ চেষ্টা করুন
রুট ক্লাসের নাম:

JSON ইনপুট

Python আউটপুট

স্থানীয়ভাবে চলে · গোপন তথ্য পেস্ট করা নিরাপদ
Python dataclass এখানে দেখা যাবে…

JSON থেকে Python Dataclass রূপান্তর কী?

JSON থেকে Python dataclass রূপান্তর একটি কাঁচা JSON অবজেক্ট নিয়ে সঠিক type annotation সহ Python dataclass সংজ্ঞার একটি সেট তৈরি করে। Python-এর dataclasses মডিউল, PEP 557 (Python 3.7)-এ প্রবর্তিত, annotated ক্লাস ফিল্ড থেকে __init__, __repr__ এবং __eq__ মেথড তৈরি করে। JSON API, কনফিগারেশন ফাইল বা মেসেজ কিউ-এর সাথে কাজ করার সময়, dataclass আপনার ডেটাকে একটি টাইপড কাঠামো দেয় যা mypy-এর মতো এডিটর ও টাইপ চেকার ডেভেলপমেন্টের সময় যাচাই করতে পারে।

Python-এর json.loads() সাধারণ dict ও list রিটার্ন করে। এগুলো কাজ করে, কিন্তু এতে কোনো টাইপ তথ্য নেই: ভুল key দিলেও error না তুলে None রিটার্ন করে, এবং আপনার এডিটর ফিল্ডের নাম অটোকমপ্লিট করতে পারে না। Dataclass প্রতিটি JSON কী-কে একটি নামযুক্ত, টাইপড ফিল্ডে ম্যাপ করে এই সমস্যা সমাধান করে। নেস্টেড JSON অবজেক্ট আলাদা dataclass সংজ্ঞায় পরিণত হয়, অ্যারে List[T] annotation হয়, এবং null মান None ডিফল্ট সহ Optional[T] হয়।

হাতে এই সংজ্ঞাগুলো লেখা যান্ত্রিক কাজ। JSON পড়তে হয়, প্রতিটি ফিল্ডের মান থেকে টাইপ বের করতে হয়, camelCase বা snake_case থেকে Python কনভেনশনে কী রূপান্তর করতে হয়, এবং nullable ফিল্ড ও মিশ্র-টাইপ অ্যারের মতো বিশেষ ক্ষেত্র সামলাতে হয়। একটি কনভার্টার এই সব কাজ মিলিসেকেন্ডে করে দেয়। JSON পেস্ট করুন, সঠিক dataclass কোড পান, এবং এগিয়ে যান।

JSON থেকে Python কনভার্টার কেন ব্যবহার করবেন?

হাতে JSON কাঠামোকে Python ক্লাস সংজ্ঞায় রূপান্তর করার অর্থ হলো নমুনা ডেটা থেকে টাইপ অনুমান করা, required ফিল্ডগুলো optional-এর আগে আসে তা নিশ্চিত করতে ফিল্ড পুনর্বিন্যাস করা, এবং API পরিবর্তিত হলে সব আপডেট করা। একটি কনভার্টার এই ঝামেলা দূর করে।

তাৎক্ষণিক dataclass তৈরি
JSON পেস্ট করুন এবং এক সেকেন্ডেরও কম সময়ে টাইপড Python dataclass সংজ্ঞা পান। নেস্টেড অবজেক্ট, লিস্ট ও optional ফিল্ড স্বয়ংক্রিয়ভাবে হ্যান্ডেল হয়।
🔒
আপনার ডেটা সম্পূর্ণ নিরাপদ
রূপান্তর সম্পূর্ণরূপে আপনার ব্রাউজারে JavaScript ব্যবহার করে চলে। আপনার JSON কখনো আপনার মেশিন ছাড়ে না। API কী, টোকেন ও ব্যবহারকারীর রেকর্ড ব্যক্তিগত থাকে।
📝
সঠিক type annotation
প্রতিটি তৈরি ফিল্ডে JSON মান থেকে অনুমান করা Python type annotation থাকে: str, int, float, bool, List[T], বা null-এর জন্য Optional[T]।
📦
ইনস্টল বা সাইনআপ নেই
পেজ খুলুন এবং JSON পেস্ট করুন। কোনো Python পরিবেশের প্রয়োজন নেই, কোনো pip প্যাকেজ ইনস্টল করতে হবে না, কোনো অ্যাকাউন্ট তৈরি করতে হবে না।

JSON থেকে Python ব্যবহারের ক্ষেত্র

REST API ক্লায়েন্ট ডেভেলপমেন্ট
API রেসপন্স নমুনা থেকে dataclass তৈরি করুন। তৃতীয়-পক্ষের REST এন্ডপয়েন্ট থেকে রিটার্ন করা JSON পেস্ট করুন এবং requests বা httpx-এর জন্য প্রস্তুত টাইপ-সেফ Python ক্লাস পান।
FastAPI Request/Response মডেল
JSON পেলোড আকার থেকে শুরু করে dataclass সংজ্ঞা তৈরি করুন। FastAPI রুট হ্যান্ডলারে স্বয়ংক্রিয় যাচাইকরণ পেতে সেগুলো Pydantic মডেলে রূপান্তর করুন।
ডেটা পাইপলাইন স্কিমা
ETL পাইপলাইনের জন্য টাইপড রেকর্ড কাঠামো সংজ্ঞায়িত করুন। Kafka, RabbitMQ বা SQS থেকে একটি নমুনা JSON মেসেজ পেস্ট করুন এবং প্রত্যাশিত আকার নথিভুক্ত করার জন্য dataclass তৈরি করুন।
কনফিগারেশন ফাইল পার্সিং
JSON কনফিগ ফাইলকে টাইপড Python ক্লাসে রূপান্তর করুন। json.load() দিয়ে কনফিগ লোড করুন, তারপর এডিটর অটোকমপ্লিট ও টাইপ চেকিংয়ের জন্য একটি dataclass ইনস্ট্যান্স তৈরি করুন।
টেস্ট ফিক্সচার তৈরি
নমুনা JSON ডেটা থেকে টাইপড ফিক্সচার তৈরি করুন। QA ইঞ্জিনিয়াররা API রেসপন্স স্ন্যাপশট পেস্ট করে pytest টেস্ট সুইটে ব্যবহারের জন্য dataclass সংজ্ঞা তৈরি করতে পারেন।
Python Type Annotation শেখা
শিক্ষার্থীরা যেকোনো JSON কাঠামো পেস্ট করে দেখতে পারেন কীভাবে Python type hint দিয়ে এটি উপস্থাপন করে। তৈরি কোডে List, Optional, নেস্টেড ক্লাস এবং প্রসঙ্গসহ ডিফল্ট মান দেখানো হয়।

JSON থেকে Python টাইপ ম্যাপিং

প্রতিটি JSON মান একটি নির্দিষ্ট Python type annotation-এ ম্যাপ হয়। নিচের সারণিতে কনভার্টার প্রতিটি JSON টাইপ কীভাবে অনুবাদ করে তা দেখানো হয়েছে — typing মডিউল সিনট্যাক্স (Python 3.7+) এবং Python 3.10 থেকে পাওয়া built-in সিনট্যাক্স উভয়সহ।

JSON টাইপউদাহরণPython (typing)Python 3.10+
string"hello"strstr
number (integer)42intint
number (float)3.14floatfloat
booleantrueboolbool
nullnullOptional[str]str | None
object{"k": "v"}@dataclass classnested model
array of strings["a", "b"]List[str]list[str]
array of objects[{"id": 1}]List[Item]list[Item]
mixed array[1, "a"]List[Any]list[Any]

Dataclass Decorator রেফারেন্স

@dataclass decorator বেশ কয়েকটি প্যারামিটার গ্রহণ করে যা তৈরি ক্লাসের আচরণ পরিবর্তন করে। এই রেফারেন্স JSON থেকে প্রাপ্ত ডেটার সাথে কাজ করার সময় সবচেয়ে প্রাসঙ্গিক বিকল্পগুলো কভার করে।

Decorator / Fieldআচরণকখন ব্যবহার করবেন
@dataclassGenerates __init__, __repr__, __eq__ from field annotationsStandard dataclasses
@dataclass(frozen=True)Makes instances immutable (hashable, no attribute reassignment)Config objects, dict keys
@dataclass(slots=True)Uses __slots__ for lower memory and faster attribute accessPython 3.10+, large datasets
@dataclass(kw_only=True)All fields require keyword arguments in __init__Python 3.10+, many fields
field(default_factory=list)Sets a mutable default without sharing state between instancesList/dict/set defaults

dataclass বনাম Pydantic বনাম TypedDict

JSON থেকে টাইপড কাঠামো সংজ্ঞায়িত করতে Python-এর তিনটি সাধারণ উপায় আছে। প্রতিটি ভিন্ন ব্যবহারের ক্ষেত্রে উপযুক্ত। Dataclass হলো শূন্য নির্ভরতা সহ স্ট্যান্ডার্ড লাইব্রেরির বিকল্প। Pydantic রানটাইম যাচাইকরণ যোগ করে। TypedDict নতুন ক্লাস না তৈরি করেই সাধারণ dict-এ annotation যোগ করে।

@dataclass
স্ট্যান্ডার্ড লাইব্রেরি (Python 3.7+)। __init__, __repr__ এবং __eq__ তৈরি করে। রানটাইম যাচাইকরণ নেই। সিরিয়ালাইজেশনের জন্য mypy ও dataclasses-json-এর সাথে কাজ করে। ইনপুট আপনার নিয়ন্ত্রণে থাকা অভ্যন্তরীণ ডেটা কাঠামোর জন্য সেরা।
BaseModel (Pydantic)
তৃতীয়-পক্ষের লাইব্রেরি। রানটাইমে টাইপ ও সীমাবদ্ধতা যাচাই করে। model_validate_json() দিয়ে সরাসরি JSON পার্স করে। FastAPI, সেটিংস ম্যানেজমেন্ট এবং অবিশ্বস্ত ইনপুট গ্রহণ করা যেকোনো কোডের জন্য আদর্শ পছন্দ।
TypedDict
স্ট্যান্ডার্ড লাইব্রেরি (Python 3.8+)। সাধারণ dict-এ type hint যোগ করে। কোনো __init__ বা মেথড তৈরি হয় না। মান সাধারণ dict অ্যাক্সেস হিসেবেই থাকে। যখন type checking প্রয়োজন কিন্তু dict ইন্টারফেস রাখতে চান, যেমন পুরানো কোডবেসে, তখন ব্যবহার করুন।

কোড উদাহরণ

এই উদাহরণগুলো Python-এ তৈরি dataclass কীভাবে ব্যবহার করবেন, JavaScript থেকে প্রোগ্রামেটিক্যালি কীভাবে তৈরি করবেন, এবং Pydantic ও CLI টুলের মতো বিকল্প পদ্ধতি কীভাবে ব্যবহার করবেন তা দেখায়।

Python (dataclasses)
from dataclasses import dataclass
from typing import List, Optional
import json

@dataclass
class Address:
    street: str
    city: str
    zip: str

@dataclass
class User:
    id: int
    name: str
    email: str
    active: bool
    score: float
    address: Address
    tags: List[str]
    metadata: Optional[str] = None

raw = '{"id":1,"name":"Alice","email":"alice@example.com","active":true,"score":98.5,"address":{"street":"123 Main St","city":"Springfield","zip":"12345"},"tags":["admin","user"],"metadata":null}'
data = json.loads(raw)

# Reconstruct nested objects manually
addr = Address(**data["address"])
user = User(**{**data, "address": addr})
print(user.name)     # -> Alice
print(user.address)  # -> Address(street='123 Main St', city='Springfield', zip='12345')
JavaScript (generate Python from JSON)
// Minimal JSON-to-Python-dataclass generator in JS
function jsonToPython(obj, name = "Root") {
  const classes = [];
  function infer(val, fieldName) {
    if (val === null) return "Optional[str]";
    if (typeof val === "string") return "str";
    if (typeof val === "number") return Number.isInteger(val) ? "int" : "float";
    if (typeof val === "boolean") return "bool";
    if (Array.isArray(val)) {
      const first = val.find(v => v !== null);
      return first ? `List[${infer(first, fieldName + "Item")}]` : "List[Any]";
    }
    if (typeof val === "object") {
      const clsName = fieldName.charAt(0).toUpperCase() + fieldName.slice(1);
      build(val, clsName);
      return clsName;
    }
    return "Any";
  }
  function build(obj, cls) {
    const fields = Object.entries(obj).map(([k, v]) => `    ${k}: ${infer(v, k)}`);
    classes.push(`@dataclass\nclass ${cls}:\n${fields.join("\n")}`);
  }
  build(obj, name);
  return classes.join("\n\n");
}

const data = { id: 1, name: "Alice", scores: [98, 85] };
console.log(jsonToPython(data, "User"));
// @dataclass
// class User:
//     id: int
//     name: str
//     scores: List[int]
Python (Pydantic BaseModel alternative)
from pydantic import BaseModel
from typing import List, Optional

class Address(BaseModel):
    street: str
    city: str
    zip: str

class User(BaseModel):
    id: int
    name: str
    email: str
    active: bool
    score: float
    address: Address
    tags: List[str]
    metadata: Optional[str] = None

# Pydantic parses and validates JSON in one step
raw = '{"id":1,"name":"Alice","email":"alice@example.com","active":true,"score":98.5,"address":{"street":"123 Main St","city":"Springfield","zip":"12345"},"tags":["admin","user"],"metadata":null}'
user = User.model_validate_json(raw)
print(user.name)              # -> Alice
print(user.model_dump_json()) # -> re-serializes to JSON
CLI (datamodel-code-generator)
# Install the generator
pip install datamodel-code-generator

# Generate dataclasses from a JSON file
datamodel-codegen --input data.json --output models.py --output-model-type dataclasses.dataclass

# Generate Pydantic models instead
datamodel-codegen --input data.json --output models.py

# From a JSON string via stdin
echo '{"id": 1, "name": "Alice", "tags": ["admin"]}' | \
  datamodel-codegen --output-model-type dataclasses.dataclass
# Output:
# @dataclass
# class Model:
#     id: int
#     name: str
#     tags: List[str]

সচরাচর জিজ্ঞাসা

Python dataclass এবং সাধারণ ক্লাসের মধ্যে পার্থক্য কী?
একটি dataclass @dataclass decorator ব্যবহার করে ফিল্ড annotation থেকে __init__, __repr__ এবং __eq__ মেথড স্বয়ংক্রিয়ভাবে তৈরি করে। সাধারণ ক্লাসে এই মেথডগুলো নিজে লিখতে হয়। ক্লাসটি প্রধানত ডেটা ধারণ করলে — যা JSON থেকে প্রাপ্ত কাঠামোর সাধারণ ক্ষেত্র — Dataclass বয়লারপ্লেট কমায়।
সরাসরি JSON সিরিয়ালাইজেশনের সাথে dataclass ব্যবহার করা যায়?
স্ট্যান্ডার্ড লাইব্রেরির json মডিউল ডিফল্টভাবে dataclass ইনস্ট্যান্স সিরিয়ালাইজ করতে পারে না। dataclass ইনস্ট্যান্সকে dict-এ রূপান্তর করতে dataclasses.asdict() ব্যবহার করুন, তারপর json.dumps()-এ পাস করুন। আরও নিয়ন্ত্রণের জন্য, dataclasses-json লাইব্রেরি .to_json() এবং .from_json() মেথড যোগ করে, এবং Pydantic মডেল সরাসরি সিরিয়ালাইজেশন হ্যান্ডেল করে।
কনভার্টার নেস্টেড JSON অবজেক্ট কীভাবে সামলায়?
প্রতিটি নেস্টেড অবজেক্ট আলাদা @dataclass সংজ্ঞায় পরিণত হয়। যদি "address" নামের একটি JSON ফিল্ডে "street" ও "city" সহ একটি অবজেক্ট থাকে, কনভার্টার একটি Address dataclass তৈরি করে এবং প্যারেন্ট ফিল্ড address: Address হিসেবে annotate করে। গভীরভাবে নেস্টেড কাঠামো নির্ভরতার ক্রমে একাধিক dataclass সংজ্ঞা তৈরি করে।
JSON ফিল্ড null হলে কী হয়?
Null ফিল্ড Optional[str] হিসেবে annotate হয় (বা context থেকে যে টাইপ বোঝা যায় সেটি) None ডিফল্ট মান সহ। ডিফল্ট সহ ফিল্ডগুলো dataclass-এ required ফিল্ডের পরে আসতে হয়, তাই কনভার্টার optional ফিল্ডগুলো ক্লাস সংজ্ঞার শেষে রাখে।
JSON-এর জন্য dataclass ও Pydantic মডেলের মধ্যে পার্থক্য আছে?
Dataclass স্ট্যান্ডার্ড লাইব্রেরির অংশ এবং রানটাইমে ডেটা যাচাই করে না। Pydantic মডেল টাইপ যাচাই করে, সীমাবদ্ধতা প্রয়োগ করে এবং সরাসরি কাঁচা JSON স্ট্রিং পার্স করতে পারে। বাইরের উৎস থেকে JSON পেলে এবং ত্রুটিপূর্ণ ডেটা প্রত্যাখ্যান করতে হলে, Pydantic আরও উপযুক্ত। বিশ্বস্ত ইনপুটের ক্ষেত্রে dataclass হালকা এবং বাইরের কোনো dependency নেই।
Python dataclass-এ camelCase JSON কী কীভাবে সামলাবেন?
Python কনভেনশন ভেরিয়েবল নামের জন্য snake_case ব্যবহার করে। কনভার্টার "firstName"-এর মতো camelCase কী-কে first_name-এর মতো snake_case ফিল্ডে রূপান্তর করে। JSON থেকে পুনরায় deserialize করতে হলে, দুটি নামকরণ কনভেনশনের মধ্যে ম্যাপিং সহ dataclasses-json লাইব্রেরি ব্যবহার করুন, অথবা একটি কাস্টম __post_init__ মেথড লিখুন।
এই কনভার্টার কি List[str]-এর পরিবর্তে list[str]-এর মতো Python 3.10+ সিনট্যাক্স সমর্থন করে?
কনভার্টার Python 3.7 থেকে 3.12 পর্যন্ত সর্বোচ্চ সামঞ্জস্যতার জন্য typing মডিউল ইম্পোর্ট (List, Optional) তৈরি করে। আপনার প্রকল্প Python 3.10 বা পরবর্তী সংস্করণ লক্ষ্য করলে, নিরাপদে List[str]-কে list[str] এবং Optional[str]-কে str | None দিয়ে প্রতিস্থাপন করতে পারেন। উপরের টাইপ ম্যাপিং সারণিতে উভয় রূপ দেখানো হয়েছে।

সম্পর্কিত টুলস

JSON ফরম্যাটার ও বিউটিফায়ারসিনট্যাক্স হাইলাইটিং সহ JSON ফরম্যাট ও বিউটিফাই করুনJSON ভ্যালিডেটরJSON সিনট্যাক্স ও স্ট্রাকচার ভ্যালিডেট করুনJSON ডিফদুটি JSON অবজেক্ট তুলনা করুন ও পার্থক্য হাইলাইট করুনJSON প্রিটি প্রিন্টপাঠযোগ্যতার জন্য কাস্টমাইজযোগ্য ইন্ডেন্টেশন সহ JSON প্রিটি প্রিন্ট করুনJSON মিনিফায়ারহোয়াইটস্পেস সরিয়ে JSON মিনিফাই ও কম্প্যাক্ট করুনJSON থেকে YAML রূপান্তরকারীJSON কে YAML ফরম্যাটে রূপান্তর করুনJSON থেকে CSVJSON অ্যারেকে CSV ফরম্যাটে রূপান্তর করুনJSON থেকে TypeScriptJSON থেকে TypeScript ইন্টারফেস তৈরি করুনJSON থেকে C# ক্লাসJSON থেকে C# ক্লাস তৈরি করুনJSON থেকে Go StructJSON থেকে Go struct তৈরি করুনJSON থেকে JavaJSON থেকে Java POJO ক্লাস তৈরি করুনJSON থেকে DartfromJson ও toJson সহ JSON থেকে Dart ক্লাস তৈরি করুন