По опыту я обнаружил, что для всех JSON хорошей идеей является включение как внутреннего типа (как строки), так и типа компонента, используемого для его рендеринга во внешнем интерфейсе (если используется что-то вроде angular или Vue).
Основанием для этого является то, что вы можете обрабатывать различные типы с помощью одного набора кода.
Например, наличие в компоненте имени компонента пользовательского интерфейса позволяет, помимо прочего, иметь экран, отображающий список дочерних элементов различных типов, используя только один тег в родительском шаблоне.
<component :is="child.componentType"/>.
Для серверных систем и веб-сервисов - я предпочитаю использовать один класс процессоров веб-сервисов, который обеспечивает ведение журналов, аудит и обработку исключений для всех веб-сервисов путем поиска соответствующего класса процессоров на основе входящей полезной нагрузки. Это делает реализацию всех моих веб-сервисов совершенно одинаковой (около 3 строк кода), и я получаю подробную регистрацию событий в течение всего жизненного цикла вызова без написания какого-либо кода службы.
Имея тип, заключающий в себе JSON, он самодокументируется. Если все, что вы видите, это свойства, вы не представляете, на что обращаете внимание, пока не найдете соответствующую конечную точку.
Если вы хотите написать программное обеспечение, управляемое данными, базовое требование - это возможность идентифицировать то, что вы обрабатываете.