졸업프로젝트

[그로쓰][Spring JPA, Json]Spring JPA 쿼리를 쉽게 작성하는 법, 리스트를 Json으로 바꾸는 법, Json을 예쁘게 보이게 하는 법

달팽이포뇨 2022. 2. 21. 13:02

1. Spring JPA에서는 findBy(속성)형식으로 쿼리를 간단히 구현이 가능합니다.

예를 들어, 위 사진처럼 작성하면 됩니다.

제가 생성한 객체의 이름은 Literature이고 속성으로 Long 타입의 이름이 id인 속성이 있습니다. 

findById()는 경로변수로 id를 받는데 이 id로 해당하는 Literature를 찾아주는 메소드입니다.

이렇게 findBy(객체의 속성) 형식으로 메소드를 쓰면 위 사진의 주석처럼 긴 쿼리를 직접 작성하지 않아도 됩니다.

참고할 점은 findById는 Optional<T>로 반환하는 것이 정해져있다는 점입니다. 저는 get()을 사용하여 이 Optional에서 하나의 객체를 꺼내서 사용했습니다.

 

2. Gson은 기본적으로 Object를 Json 형식으로 바꿔주는 라이브러리입니다. 그리고 여러 부가기능도 제공하는 라이브러리입니다.

https://github.com/google/gson

 

GitHub - google/gson: A Java serialization/deserialization library to convert Java Objects into JSON and back

A Java serialization/deserialization library to convert Java Objects into JSON and back - GitHub - google/gson: A Java serialization/deserialization library to convert Java Objects into JSON and back

github.com

여기서 다운받는 법을 참고하면 됩니다. 저는 gradle을 사용중이므로 dependencies에 gson을 추가해주었습니다.

 

2-1. Gson을 이용해서 List를 Json 형태로 바꾸기

List<객체>를 Json으로 바꾸어 리턴해야하는 경우에 이 방법을 쓰면됩니다.

String json = new Gson().toJson(리스트 이름);

2-2. Gson으로 Json을 예쁘게 보이게 하기

프론트를 맡은 친구가 요청해서 인터넷에 검색해보았더니 Gson을 사용하는 이 방법이 가장 간단했습니다.

Gson gson = new GsonBuilder().setPrettyPrinting().create();

 

저는 이 2가지 방법을 모두 사용해서 아래와 같이 코드를 작성하였습니다.

List<Literature> literatureList= literatureRepository.findAll();
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String json = gson.toJson(literatureList);
return json;

Literature객체를 담은 List를 생성하고 Gson에 Json을 예쁘게 보이게 할 수 있게 만들고 이 List를 gson의 toJson() 메소드를 이용하여 json으로 바꿉니다. 이렇게하면 아래와 같이 Json이 만들어지게 됩니다.

[
    {
    "id": 1,
    "title": "별 헤는 밤"
    },
    {
    "id": 2,
    "title": "서시"
    }
]