I made this as a comment, but I'm pushing it up.
JSON is inherently safe, the problem is what folks do with it.
Using eval to evaluate it is the problem, not the format, since the format is implicitly limited by the JSON spec. Corrupted JSON can make eval unsafe. So... don't do that. Don't use eval, use a dedicated JSON parser.
Same logic can be applied to HTML. Treat the HTML as "data", as simply XML, and process it, rather than just blindly stamping it in to your pages.
Much harder to shenanigans to slip through that way.