我有一个 Spring Boot 应用程序,我打算在其中编写一个 API,它是一个 GET 请求,但其中有许多请求参数。所以我创建了一个 POJO,它将请求参数映射到 POJO。我想在将请求参数映射到 POJO 之前对其进行反序列化。
我怎样才能做到这一点?
我创建了自定义反序列化器并用@JsonDeserialize(using = "CustomDeserializer.class")
. 调用不是登陆到反序列化器,而是直接将字段映射到 POJO。
//pojo
@Getter
@Setter
@JsonDeserialize(using = CustomDeserializer.class)
public class GetRequest implements Serializable {
private int id;
private String date;
private List<Test> List;
private int uiRank;
private int fr;
private String city;
private String state;
private String country;
}
//Deserializer
@JsonComponent
public class CustomDeserializer extends JsonDeserializer<GetRequest> {
@Override
public GetRequest deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException {
//logic to deserialize
}
}
//controller
@RestController
public class TestController {
@GetMapping("/details")
public void getTestDetails(GetRequest getRequest) {
//logic
}
}
无法在控制器中的 API 上使用 queryparam 注释,因为我有很多查询参数。我需要使用一个与所有查询参数映射的 POJO,但在需要执行反序列化器之前。