Search

11. 스프링부트 Controller JSON 응답하기

http 요청을 json으로 응답하기

package com.cos.controllerdemo.web; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; //http응답을 json으로 하는 컨트롤러 @RestController public class HttpResponseJsonController { @GetMapping("/resp/json") public String respJson() { return "문자열"; } }
Java
복사
문자열을 리턴했다
이제 json으로 리턴하게 해보자
@GetMapping("/resp/json") public String respJson() { return "{\"username\" : \"cos\"}"; }
Java
복사
“”안에 역슬래시(\)를 넣어줘야한다
“” 가 문자열을 나타내는거라서 json형태의 안에도 쌍따음표를 넣어줄려면 역슬래시로 넣어줘야한다.
역슬래시 붙여넣기 귀찮으면 메모장에 먼저 json데이터로 만들어서 복사해서 붙여넣으면 역슬래시 자동 생성된다.
User 오브젝트로 리턴한다면?
@GetMapping("/resp/json/object") public User respJsonObject() { User user = new User(); user.setUsername("홍길동"); return user; }
Java
복사
문자열로 리턴하지 않고 User object로 리턴했는데 같은 데이터로 온다
다시 User Object의 데이터를 꺼내서 json형태로 넘겨줘본다.
@GetMapping("/resp/json/object") public String respJsonObject() { User user = new User(); user.setUsername("홍길동"); String data = "{\"username\":\""+user.getUsername()+"\"}"; return data; }
Java
복사
그래도 똑같이 나온다.
근데 이렇게 번거롭게 안하고
다시 밑에처럼 수정해서 써주는게 좋다.
@GetMapping("/resp/json/javaObject") public User respJsonJavaObject() { User user = new User(); user.setUsername("홍길동"); return user; }
Java
복사
결국은
MessageConverter가 String data = "{\"username\":\""+user.getUsername()+"\"}"; 역할을 해줬다.
정확히는 자동으로 JavaObject를 Json으로 변경해서 통신을 통해 응답을 해준다.
package com.cos.controllerdemo.web; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import com.cos.controllerdemo.domain.User; //http응답을 json으로 하는 컨트롤러 @RestController public class HttpResponseJsonController { @GetMapping("/resp/json") public String respJson() { return "{\"username\" : \"cos\"}"; } @GetMapping("/resp/json/object") public String respJsonObject() { User user = new User(); user.setUsername("홍길동"); String data = "{\"username\":\""+user.getUsername()+"\"}"; return data; } @GetMapping("/resp/json/javaObject") public User respJsonJavaObject() { User user = new User(); user.setUsername("홍길동"); return user; //1. MessageConverter 가 자동으로 JavaObject를 Json(구:xml)으로 변경해서 통신을 통해 응답을 해준다. //2. @RestController 일때만 MessageConverter가 작동한다. }
Java
복사

*참고