고코딩

[SpringBoot] GSON을 이용해 json 타입 보내는 방법 본문

Spring 공부

[SpringBoot] GSON을 이용해 json 타입 보내는 방법

고코딩 2021. 4. 20. 15:58

SpringBoot로 간단한 정보를 보내야하는데 json 타입으로 보내야 할 일이 있었다.

처음에는

@GetMapping()
    public String getBirthYmd() throws Exception {
        ...생략...

        return "문자열";
    }

위 처럼 보내면 json 방식으로 Response Body에 담겨서 날아가는 줄 알았는데 그냥 문자열만 날아갔다.

이렇게 날리면 받는 쪽에서는 원하는 정보를 빼내기 힘들다. 물론 new ResponseEntity<T>(T,HttpStatus); 로 보내면 T타입 객체가 자동으로 json으로 파싱되지만 json 방식을 커스텀 하고 싶을때는 여간 귀찮은게 아니다.

다행히 좋은 라이브러리가 있다.

  • SpringBoot 4.0.0
  • java 8
  • build 도구 : Maven
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.5</version>
        </dependency>

pom.xml에 위의 의존성을 추가해준다. 메이븐 레포지토리에 gson을 검색해서 추가하면 된다.

이후 JsonObject 객체를 생성할 수 있다.

JsonObject obj = new JsonObject();

@GetMapping()
public String getJsonObj(){
    obj.addProperty("sample1", "sample1");
    obj.addProperty("sample2", "sample2");

    JsonObject data = new JsonObject();
    data.addProperty("data1", "data1");
    data.addProperty("data2", "data2");

    obj.add("data", data);

    return obj.toString();
}

위 코드대로 Response를 보내면

{"sample1":"sample1","sample2":"sample2","data":{"data1":"data1","data2":"data2"}}

의 형태로 Response Body에 담겨서 보내지게 된다.