That's called EAV (Entity Attribute Value,
https://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80...).
I have done it before, once. While some folks will tell you it's just wrong, like NoSQL I think it's sometimes the best fit, even for the entire life of the app.
For 99% of things, though, I use SQL tables, normalized to the Third Normal Form, foreign keys, the whole shebang.