在Kotlin中使用动态字段解析json对象
我有一个JSON对象:在Kotlin中使用动态字段解析json对象,json,spring-boot,kotlin,Json,Spring Boot,Kotlin,我有一个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": f
{
"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 }"
}
我使用弹簧靴和Kotlin。Spring boot会自动将提到的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
)
数据类SmsDto(
var mobileNum:字符串?=null,
val appId:字符串?=null,
val messageId:String?=null,
var paramMap:Map?=null,
var shouldSendDate:时间戳?=null,
变量过滤器:映射?=defaultFilters
)
如您所见,我遇到的问题是过滤器
字段,它是一个字符串
,但可能包含另一个JSON对象。因此,我使用了一种懒惰的解决方案,即转义内部JSON双引号,然后自己解析它
有没有更标准的解决方案可以让我发送一个合适的内部JSON对象?Spring Boot似乎正在使用Jackson库处理您的数据类和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: SmsFiltersDto? = defaultFilters
)
data class SmsFiltersDto(
var yourField: Boolean = false,
...
)
数据类SmsDto(
var mobileNum:字符串?=null,
val appId:字符串?=null,
val messageId:String?=null,
var paramMap:Map?=null,
var shouldSendDate:时间戳?=null,
变量过滤器:SmsFiltersDto?=默认过滤器
)
数据类SmsFiltersDto(
变量yourField:Boolean=false,
...
)
Spring Boot似乎正在使用Jackson库处理您的数据类和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: SmsFiltersDto? = defaultFilters
)
data class SmsFiltersDto(
var yourField: Boolean = false,
...
)
数据类SmsDto(
var mobileNum:字符串?=null,
val appId:字符串?=null,
val messageId:String?=null,
var paramMap:Map?=null,
var shouldSendDate:时间戳?=null,
变量过滤器:SmsFiltersDto?=默认过滤器
)
数据类SmsFiltersDto(
变量yourField:Boolean=false,
...
)