私は、GET リクエストであるが多くのリクエスト パラメータを含む API を作成する予定のスプリング ブート アプリを持っています。そのため、リクエスト パラメータを POJO にマップする 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 を使用する必要がありますが、その前にデシリアライザを実行する必要があります。