Skip to content

prefer-pydantic-json-value

Recursive JSON value alias duplicates pydantic.JsonValue.

Why

Pydantic's canonical JSON value alias keeps the static contract aligned with runtime validation and prevents subtly divergent recursive definitions inside packages that already depend on Pydantic v2.

Fix

Import and use pydantic.JsonValue instead of maintaining an equivalent recursive alias.

Examples

Before — flagged Use Pydantic's canonical recursive JSON value
pyproject.toml
[project]
name = "app"
version = "0.1.0"
dependencies = ["pydantic>=2"]
src/app/types.py
type JsonValue = (
str | int | float | bool | None | list[JsonValue] | dict[str, JsonValue]
)
After — preferred The Pydantic alias is already canonical
src/app/types.py
from pydantic import JsonValue
value: JsonValue