Getting a model to return JSON is easy.

Getting reliable JSON across multiple models is a production problem.

A response can parse successfully and still break the workflow:

a required field is missing

an enum value is unsupported