WitnessTruth:
私のフロントエンドでは、私は、このJSONを送信します。
"ids": [ 123421, 15643, 51243],
"user": {
"name": "John",
"email": "[email protected]"
}
以下の私の春のエンドポイントに:
@PostMapping(value = "/sendToOficial")
public ResponseEntity<?> sendToOficial(@RequestBody Map<String, Object> payload) {
ObjectMapper mapper = new ObjectMapper();
List<Long> pointsIds = mapper.convertValue( payload.get("pointsIds"), List.class );
UsuarioDTO autorAlteracao = mapper.convertValue(payload.get("user"), UsuarioDTO.class);
for (Long idPoint : pointsIds) { ... }
しかし、私はそれをロングに整数にキャストできないことを言ってでキャスト例外を取得しています。
私はロングとして受信したい、整数として「IDS」の数字を受け取ることができません。、どのように私はこれを行うことができますしてください?
Lorelorelore:
まず、あなたのリクエストオブジェクトをマッピングするためのPOJOを定義します。
public class RequestObj implements Serializable{
private List<Long> ids;
private UsuarioDTO user;
/* getters and setters here */
}
public class UsuarioDTO implements Serializable{
private String name;
private String email;
/* getters and setters here */
}
そして、あなたのエンドポイントを変更します。
@PostMapping(value = "/sendToOficial")
public ResponseEntity<?> sendToOficial(@RequestBody RequestObj payload) {
この方法でも使用する必要はありませんObjectMapper
。ただ、コールpayload.getIds()
。
ペイロードがあなただけ変更する必要があります変更された場合、この方法でもあると考えRequestObj
使用している間、定義ObjectMapper
の重要な方法でも、あなたのエンドポイントを更新するために、あなたを強制します。これは、制御ロジックとは別のペイロード表現に、より良い、より安全なのです。