Мне нужно сериализовать иерархию классов дел Scala в виде JSON, чтобы сохранить их в БД. Я в настоящее время использую json4s, и он работает довольно хорошо. Однако при десериализации в Java Джексон требует, чтобы у меня был пустой конструктор для case-классов (который не существует).
Другой вариант, который я пробовал, - определить функцию десериализации в моей библиотеке scala, импортировать ее в код Java и запустить во время выполнения, чтобы прочитать строку и построить относительный класс иерархии. Таким образом, я могу реконструировать объект в мире Java. После этого я хочу вернуть этот объект: если я верну его как объект, я не смогу его правильно сериализовать (Джексон использует другую логику, чем json4s); если я использую свою функцию scala, я могу создать строку и вернуть ее, но по некоторым причинам она возвращается с экранированием:
"{\"jsonClass\":\"TimeExtremaConfig\",\"name\":\"payment_first_seen_hotel_id_on_agency\"}
Есть ли лучший способ решить эту проблему? Либо найти способ десериализации классов дел и повсеместно использовать Джексона, либо избежать выхода из второго варианта