This is a very quick example of tables and nested in each table the columns and indexes that tables has.
select t.table_name,
cursor(select column_name
from user_tab_cols tc
where tc.table_name = t.table_name) cols ,
cursor(select index_name
from user_indexes i
where i.table_name = t.table_name) indexes
from user_tables t
The resulting JSON looks like this.