mdoTomofumi Chiba
2/7/2025, 11:31:13 AM

Spring RestTemplate(とか)は、null を Value Object に対してどうマッピングするか確認

@RestController
public class TestController {

    @RequiredArgsConstructor
    public static class Vo {
        private final String value;

        @JsonValue
        public String getValue() {
            return value;
        }
    }

    @ToString
    public static class Entity {
        public Vo vo;
    }

    @GetMapping(value = "/test", produces = MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity<String> test() {
        return ResponseEntity.ok("""
                {"vo": null}
                """);
    }

    public static void main(String[] args) {
        var a = new RestTemplate()
                .getForObject("http://localhost:8080/test", Entity.class);
        System.out.println(a.vo); // null
    }
}

中身が null の Value Object ではなく、オブジェクト自体が null になる。
つまり、getValue() する時は、null チェックをしないとダメ。

#値オブジェクト

TweetBlueskyLike