📊 Generate from JSON / YAML / CSV Data¶
Generate Pydantic models directly from raw JSON, YAML, or CSV data. Under the hood, the generator uses GenSON to infer a JSON Schema from JSON/YAML input, or infers a schema from CSV rows, then processes it the same way as JSON Schema input.
🚀 Quick Start¶
datamodel-codegen \
--input pets.json \
--input-file-type json \
--output-model-type pydantic_v2.BaseModel \
--output model.py
Use --input-file-type yaml for raw YAML sample data and --input-file-type csv
for CSV files. If a YAML file is a schema definition rather than sample data, use
--input-file-type jsonschema, openapi, or asyncapi instead.
📝 Example¶
pets.json
{
"pets": [
{
"name": "dog",
"age": 2
},
{
"name": "cat",
"age": 1
},
{
"name": "snake",
"age": 3,
"nickname": "python"
}
],
"status": 200
}
✨ Generated model.py
# generated by datamodel-codegen:
# filename: pets.json
# timestamp: 2020-04-27T16:08:21+00:00
from __future__ import annotations
from pydantic import BaseModel
class Pet(BaseModel):
name: str
age: int
nickname: str | None = None
class Model(BaseModel):
pets: list[Pet]
status: int
📖 See Also¶
- 📋 Generate from JSON Schema - JSON Schema input documentation
- 🖥️ CLI Reference - Complete CLI options reference
- 📊 Supported Data Types - Data type support details