Разбор объекта 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, ... ) 
Intereting Posts
Как передать параметр типа в ссылку на общий конструктор класса? Котлин, получивший доступ к классу Java Почему URL ("http://pboss.pozit.pl/contact.html") .readText () делает сбой приложения для Android? GridView удаляет только первый элемент при нажатии элемента. Java-> Котлин Замена Kotlin для groovy XmlSlurper & MarkupBuilder Как настроить проект eclipse для использования Kotlin с JPA / Hibernate? Класс Kotlin работает как тесты junit, даже если он находится в пакете androidTest – для класса Java он работает нормально Функция типа Ketlin reified как расширение функции – Вызывается с Java? Не удается найти классы Kotlin при компиляции IntelliJBehave Почему не используется Intellij Idea Console для пользовательского ввода Частный конструктор в Котлине admob banner использует слишком много памяти Chromecast – Cast Dialogue не имеет тени и не может отменить внешний контакт Факториал с использованием цикла `for` в Котлине Зависимость между задачами