Касательно БД ответ зависит о того, что вы с этими данными, в основном, делать будете. Если просто выводить весь набор, без (или почти без) фильтрации, поиска и т.д. на бэке, то лучше хранить объекты в том виде, в котором они через API отдаваться будут, т.е. в JSON. Если активно будете пользоваться поиском и фильтрацией по свойствам объектов, то лучше хранить свойства объектов - по крайней мере, используемые для поиска фильтрации, а, возможно, и все - как отдельные поля БД. Остальные свойства при этом можно хранить и в JSON: современные БД, и, в частности, PostgreSQL, умеют с ним работать. Если ожидается что у разных объектов будет разный набор свойств, и по этому набору поиск/фильтрация не будет производиться (по крайней мере - часто), то таким свойствам совершенно точно место в JSON (или использовать альтернативный подходы, про которые пока писать не буду).
Короче, выбор тут конкретный, и, нередко - творческий.