이 포스팅의 코드 및 정보들은 강의를 들으며 정리한 내용을 토대로 작성한 것이 일부 존재합니다.
Object Mapper는 Spring Boot에 com.fasterxml.jackson이 제공하는데, 기본적으로 의존성이 부여되어있고, Bean으로 등록이 되어있다.
JSON을 파싱받고 내보낼 때, 어떤 객체를 JSON으로 변환하거나 문자열을 객체로 파싱받을 때 Object Mapper가 유용하게 쓰일 수 있다.
@GetMapping(...)
public String updateTag(Account account, Model model) throws JsonProcessingException {
Set<Tag> tags = accountService.getTags(account);
List<String> allTags = tagRepository.findAll().stream().map(Tag::getTitle).collect(Collectors.toList());
model.addAttribute("whiteList", objectMapper.writeValueAsString(allTags));
return ...;
}
이렇게 model 객체에다가 List값을 직렬화한 값을 넣고, 프론트 부분에서는 이를 타임리프로 받은 후 JavaScript로 라이브러리를 이용하는 등 다양하게 활용할 수 있다.
<div id="whiteList" th:text="${whiteList}" hidden></div>
<script>
var tagify = new Tagify(tagInput, {
...
whitelist: JSON.parse(document.querySelector("#whiteList").textContent),
...
});
</script>