JSON-in-a-string is a commonplace method of having a generic or any type when you are too lazy to write a proper structure for it, or want to save an object into a database without creating an additional table. In all fairness it has nothing to do with the language itself, and more with lazy coders. Postgresql even have additional SQL operators to access individual JSON fields inside a record, so yeah, you can dump a whole new unstructured database into a row of your existing database, it’s totally an acceped practice.










As for languages that are acceptable for business logic, C++ is lolno, Java is kinda surprisingly okay because so much business logic is already written in it and debugging is trivial, Python is not worse than Java for the same reason when you are using proper linter to catch typos, C# / Go / Ruby are probably the best because they are most modern with the lowest footgun ratio.