Analizando un object json con un campo dynamic en Kotlin

Tengo un object 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 }" } 

Uso Spring Boot y Kotlin. Spring boot asigna automáticamente el JSON mencionado al siguiente model de bean:

 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 ) 

Como puede ver, el problema que tengo es con el campo filters , que es una String , pero puede contener otro object JSON. Así que utilicé una solución perezosa para escaping de las comillas dobles internas de JSON y luego analizarlas por mi count.

¿Hay una solución más estándar que me permita enviar un object interno JSON adecuado?

Spring Boot parece estar usando la biblioteca de Jackson para trabajar con sus classs de datos y formatting json. Puede usar otra class de datos como tipo de campo de 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, ... ) 
  • El controller de exception Spring Boot @ControllerAdvice no se activa
  • Jackson ready only collections
  • Kotlin: ejecuta una testing de integración, el error `diversión principal ya está definido`
  • Spring Boot Application: File System Watcher para muchas routes
  • Estado de respuesta HTTP SpringBoot Kotlin Api
  • Configure Jackson para usar SNAKE_CASE "globalmente" en Spring Boot 2.0.0.M1
  • Seguridad de spring. Página de inicio de session multilenguaje basada en url
  • Kotlin + Spring Boot solicita sorting
  • Referencia no resuelta: SpringExtension utilizando @ExtendWith anotación
  • Spring Boot e Hibernate. Manejar la fábrica de sesiones
  • Encabezados HTTP no devueltos en EC2