1

私は、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 を使用する必要がありますが、その前にデシリアライザを実行する必要があります。

4

0 に答える 0