ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 79일차 - RESTful
    백엔드(웹 서버, WAS)/Spring Boot 2024. 5. 23. 12:04

    RESTful 문자열을 자바 참조형으로 변환하기

    @GetMapping(value="/rest/strMap.ajax")
    public Map<String, Object> strMap() throws Exception {
    
        // JSON 형태의 문자열 (다른 서버에 요청할 경우 이렇게 JSON 형태의 문자열을 받게 된다)
        String json = "{\"no\":1, \"msg\":\"HashMap 변환 완료\", \"name\":\"김지훈\"}";
    
        ObjectMapper mapper = new ObjectMapper();
    
        // Map<String, Object> response = mapper.readValue(json, Map.class);
        // Map 의 제너릭이 지정되지 않아 비효율적이라고 경고한다
        // 컴파일러한테 Map 이 어떤 제너릭을 가지고 있는지 알려주어 효율적으로 실행된다
        Map<String, Object> response = mapper.readValue(json, new TypeReference<Map<String, Object>>(){});
        logger.info("no : {}", response.get("no"));
        logger.info("msg : {}", response.get("msg"));
        logger.info("name : {}", response.get("name"));
        return response;
    }
    
    @GetMapping(value="/rest/strObject.ajax")
    public UserInfo strObject() throws Exception {
    
        // JSON 형태의 문자열 (다른 서버에 요청할 경우 이렇게 JSON 형태의 문자열을 받게 된다)
        String json = "{\"id\":\"json_ID\", \"name\":\"홍길동\", \"age\":24, \"promotion\":true}";
    
        ObjectMapper mapper = new ObjectMapper();
    
        // Map<String, Object> response = mapper.readValue(json, Map.class);
        // Map 의 제너릭이 지정되지 않아 비효율적이라고 경고한다
        // 컴파일러한테 Map 이 어떤 제너릭을 가지고 있는지 알려주어 효율적으로 실행된다
        UserInfo response = mapper.readValue(json, UserInfo.class);
        logger.info("id : {}", response.getId());
        logger.info("name : {}", response.getName());
        logger.info("age : {}", response.getAge());
        logger.info("promotion : {}", response.isPromotion());
        return response;
    }

    AJAX 통신을 통해 받은 문자열을 Jackson 라이브러리가 제공하는 메소드로 변환할 수 있다

    실시간 수정 기능 구현

    // 항상 요소가 출력되고 나서 이벤트를 걸어줄것!
    $('input[type="text"]').focusin(function () {
        $(this).css({"background-color":"white"});
    });
    // 포커스 아웃 이벤트가 발동되면 다 작성했다고 판단하고 서버에 수정 요청을 보낸다
    $('input[type="text"]').focusout(function (e) {
        $(this).css({"background-color":"lightgray"});
        // e.target 이벤트가 걸린 대상을 의미한다
        console.log(e.target);
        console.log($(this));
        console.log('서버에 변경 요청');
        // 변경된 내용이 있으면 수정 요청을 하도록 만들자
    });

     

Designed by Tistory.