Разбор объекта json с динамическим полем в Котлине

У меня есть объект JSON:

{ "mobileNum": "05x-xxxxxxx", "appId": "some_app", "messageId": "printUsersFirstTime", "shouldSendDate": "2017-10-03T16:20+03:00", // this is optional "paramMap": { "userName": "some_name" }, "filters": { "UNIQUE": false, "RECENT": "{ \"unit\": \"MINUTE\", \"size\": 5 }" } 

Я использую Spring Boot и Kotlin. Spring boot автоматически сопоставляет упомянутый JSON с следующей моделью:

 data class SmsDto( var mobileNum: String? = null, val appId: String? = null, val messageId: String? = null, var paramMap: Map<String, String>? = null, var shouldSendDate: Timestamp? = null, var filters: Map<String, String>? = defaultFilters ) 

Как вы видите, проблема, которую я имею, – это поле filters , которое является String , но может содержать другой объект JSON. Поэтому я использовал ленивое решение избежать двойных кавычек JSON и затем самостоятельно разобрать его.

Есть ли более стандартное решение, которое позволит мне отправить собственный внутренний объект JSON?

Spring Boot, похоже, использует библиотеку Jackson для работы с вашими классами данных и json-форматом. Вы можете использовать другой класс данных как тип поля filters .

 data class SmsDto( var mobileNum: String? = null, val appId: String? = null, val messageId: String? = null, var paramMap: Map<String, String>? = null, var shouldSendDate: Timestamp? = null, var filters: SmsFiltersDto? = defaultFilters ) data class SmsFiltersDto( var yourField: Boolean = false, ... )