Yeah, json is annoying because of the limited types, but postgres arrays/rows are annoying because of the lack of sum/union types (if your UI has a heterogenous list of elements).
The OLAP world has much nicer type systems eg https://duckdb.org/docs/stable/sql/data_types/union.html.