Я предлагаю подход 3: пересмотреть восстановленные объекты Java сразу по прибытии и до того, как любая другая логика сможет воздействовать на них. Создайте наиболее строгую проверку, с которой вы можете обойтись (то есть создайте белый список).
Вероятно, вы можете сделать это за один проход в глубину иерархии объектов, которую вы извлекаете из Json-lib. Как правило, вы не хотите принимать какие-либо функции JSON в своих объектах, и вам нужно убедиться, что все значения (числа, строки, глубина дерева объектов, ...) находятся в ожидаемых диапазонах. Да, это сложно, но поверьте мне, альтернатива хорошей проверке пользовательского ввода намного, намного хуже. Хорошей идеей может быть добавление ведения журнала, когда вы что-то исключаете, для диагностики любых возможных ошибок в коде проверки.