쌓고 쌓다

스프링 JSON 응답에 추가 정보(데이터) 추가하기 본문

프로그래밍/spring

스프링 JSON 응답에 추가 정보(데이터) 추가하기

승민아 2023. 7. 27. 21:25

대댓글 구현중에 대댓글 더보기 버튼을 사용자에게 제공하는 기능을 만들고 있었다.

더 가져올 데이터가 없다면 더보기 댓글을 없애고싶었다.

 

 

대댓글 더보기할때 대댓글 총 개수를 넘게된다면 더보기 기능은 없어져야한다.

그러기위해서는 대댓글 데이터를 JSON으로 받아올때 해당 댓글의 대댓글의 총 개수가 필요했다.

 

기존의 대댓글 데이터를 서버로부터 받아오면 페이징처리된 대댓글(Page<Comment>)의 JSON이였지

내가 필요한 정보를 더 담아내지 못했다.

 

아래의 코드처럼 작성한다면 JSON에 추가 정보를 담아 응답을 내줄 수 있다.

    public Map<String, Object> findReply(Long parentCommentId, int page) {
        Sort sort=Sort.by(Sort.Order.desc("regDate"), Sort.Order.desc("id"));
        Pageable pageable = PageRequest.of(page, 5, sort);
        Map<String, Object> m = new HashMap<>();
        m.put("content" ,commentRepository.findByParentCommentIdAndIsParent(parentCommentId, false ,pageable));
        m.put("totalSize", commentRepository.countByParentCommentIdAndIsParent(parentCommentId, false));
        return m;
    }

Map<String, Object>를 반환해주면 된다.

"content" Key에는 페이징처리된 대댓글들이.

"totalSize" Key에는 해당 댓글에 달린 대댓글의 총 개수를 넣었다.

즉, 그냥 키와 값으로 반환값을 맞춰주면 JSON으로 추가 정보들을 담아 응답할 수 있다.

 

기존에 페이징 처리된 대댓글 5개만 응답으로 받았지만

이제 Map<String, Object>로 원하는 키 값을 추가하여 JSON 응답을 줄 수 있다.

Comments