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
복사