1

我有一个 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,但在需要执行反序列化器之前。

4

0 回答 0