JSON → Python TypedDict
ClientPaste JSON to get TypedDict scaffolding with inferred property types—handy for typing json.loads results or editor hints.
Review the generated typing
Treat the output as static typing scaffolding. Check optional keys, nullable values, union shapes, and whether your project needs runtime parsing with pydantic, dataclasses, or explicit validators.
Learn more: JSON and Python
Emit `typing.TypedDict` classes that mirror the sample object—starter shapes for `json.loads` pipelines or editor tooling.
Keys and types
Property names use camelCase when they are valid Python identifiers; otherwise they fall back to snake_case. Numbers map to floats by default; tighten to `int` or `Decimal` when your API guarantees them. One example does not capture every optional field—use `typing.NotRequired` or `TypedDict(..., total=False)` once you know the contract.
JSON → Python
?
Parses JSON in your browser and emits classes inferred from the sample shape. Nested objects become nested types; arrays use the first element only to guess item shape. Nothing is uploaded.
Keys follow valid Python identifiers (camelCase or snake_case); tighten floats to int where your API guarantees integers.
Nearby workflows on Toolcore
- JSON formatter — when the sample still needs strict parse before you trust the inference.
- JSON → Zod — when you want runtime validation beyond TypedDict hints.
- Compare JSON — after you change the sample and want to see structural drift.
Common use cases
- Sketch TypedDicts for json.loads() results when you only have sample payloads.
- Document internal RPC or task payloads before wiring pydantic or dataclasses.
- Compare inferred shapes across environments to spot drifting keys.
- Create editor-friendly type hints for a small API client before deciding whether to introduce a validation library.
- Turn a fixture or webhook example into a reviewable type contract for tests and documentation.
Common mistakes to avoid
Expecting TypedDict to enforce runtime validation
TypedDict is static typing. For runtime checks, use pydantic models or validators—this generator only suggests structure.
Missing unions when fields vary by type
If a key is sometimes a string and sometimes an object, merge samples or model Union types manually.
Forgetting total=False and NotRequired
A single sample cannot prove that every key is required. Use total=False or NotRequired when absent keys are valid.
Using TypedDict where runtime parsing is needed
TypedDict improves static analysis only. Use pydantic, attrs, dataclasses, or manual checks when untrusted JSON needs validation.
FAQ
Is code generation local?
Yes. Parsing and emission happen entirely in your browser tab.
Does this emit dataclasses?
It targets TypedDict-style typing. Convert or wrap if your project prefers dataclass or pydantic classes.
Which Python version should I target?
The output is a starting point for modern typing. Adjust imports for your version, for example typing_extensions when you need compatibility helpers.
How should null values be represented?
Review nulls manually. Depending on the contract, a field may be Optional, NotRequired, or better represented by a stricter runtime model.
More tools
Related utilities you can open in another tab—mostly client-side.
JSON → Rust structs (serde)
ClientSerde structs with JSON renames from sample data—local only.
JSON → Go structs
ClientGo structs with json tags from sample JSON—inferred in the browser.
JSON → PHP classes
ClientPHP 8+ typed classes from sample JSON—strict_types and list phpdoc, local only.
YAML ↔ JSON
ClientYAML to JSON and JSON to YAML online—bidirectional converter, format either side in the browser.