It really depends on your use case.
Pro JSON:
- Easy to write DB query for
- Simpler Select queries (less joins)
- Many programming adapters support automatic conversion for specific column types, which would be helpful for JSON by parsing it
Contra JSON:
- Data within JSON is very hard to analyze via the DB itself, almost forced to parse in programming language used
- Data stored could be any valid JSON string, so it isn't very robust to wrong input
I would recommend ONLY using JSON columns if the data stored in it is only there to be read and saved in the database, while the rest would be handled by your programming language of choice. If you want data that is actually accessible via the DB itself, DO NOT use JSON.