使用Kotlin中的动态字段解析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引导自动将提到的JSON映射到下面的模型bean:

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

正如你所看到的,我遇到的问题是filters字段,这是一个String ,但可能包含另一个JSON对象。 所以我用一个懒惰的解决方案逃脱内部的JSON双引号,然后解析它自己。

有没有一个更标准的解决方案,将允许我发送适当的内部JSON对象?

Spring Boot似乎在使用Jackson库来处理您的数据类和json格式。 您可以使用另一个数据类作为filterstypes的字段。

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