我是 Kotlin/Java World 的新手。所以我需要一点帮助来以简单的方式解析旧式请求。
在新请求之前,我的控制器运行良好。
我的控制器:
@PostMapping("/create")
@ResponseStatus(OK)
fun create(
@RequestBody @NotEmpty request: PersonRequest,
) = service.create(mapper.toDto(request))
新的正文请求:
{
"fields": [
{
"id": "name",
"value": "blablabla"
},
{
"id": "phone",
"value": "+1 11111111"
},
{
"id": "birthday",
"value": "2000-01-01"
}
]
}
我的班级:
class PersonRequest(
var name: String?,
@field: Pattern(regexp = "blabla")
var phone: String?,
var birthday: LocalDate?
)
有什么建议吗?谢谢!
答案 0 :(得分:0)
您发布的请求正文与 PersonRequest
类不匹配。
将请求正文结构更改为:
{
"name": "blablabla",
"phone": "+1 11111111",
"birthday": "2000-01-01"
}
更新:
由于您无法更新请求结构,您的另一个选择是通过创建两个类来更改类结构,如下所示:
class PersonRequest(var fields: List<Field>)
class Field(var id: String, var value:Any)
更新 2:
最后一步(根据您的要求是可选的)是您现在可以操作 PersonRequest
类并使用普通的 setter/getter 将其转换为任何其他类。
更新 3:
要将 List<Field>
转换为 PersonRequest
,您可以这样做:
val personRequest = PersonRequest()
fields.forEach {
when(it.id) {
"name" -> personRequest.name = it.value
"phone" -> personRequest.phone = it.value
"birthday" -> personRequest.birthday = it.value
}
}
不是最简洁的代码,但是...