我有一个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<String, String>? = null,
var shouldSendDate: Timestamp? = null,
var filters: Map<String, String>? = defaultFilters
)
如您所见,我遇到的问题是filters
字段,它是String
,但可能包含另一个JSON对象。所以我使用了一个懒惰的解决方案来转义内部JSON双引号然后自己解析它。
是否有更标准的解决方案可以让我发送一个合适的内部JSON对象?
答案 0 :(得分:2)
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,
...
)