Spring 프레임 워크는 JSON형식의 응답을 생성하고 전송하기 위한 기능이 있다.
JSON문자열 응답하는 방법
1. JSON라이브러리의 의존성 추가
먼저 pom.xml 에 jackson-databind dependency 를 추가한다.
@Controller
public class TestController {
@ResponseBody
//viewpage의 경로를 찾는게 아닌 문자열을 응답하기 위해서
@RequestMapping("/test/json1")
public String json1() {
return "{\"num\":1, \"name\":\"kim\", \"addr\":\"seoul\"}";
}
💻 출력
@ResponseBody
@RequestMapping("/test/json2")
public MemberDto json2() {
//db에서 읽어온 회원정보라고 가정하자
MemberDto dto = new MemberDto();
dto.setNum(2);
dto.setName("lee");
dto.setAddr("busan");
return dto;
//dto or map => { }
}
💻 출력
@ResponseBody
@RequestMapping("/test/json3")
public Map<String, Object> json3(){
Map<String, Object> map = new HashMap<>();
map.put("num", 3);
map.put("name", "원숭이");
map.put("addr", "동물원");
return map;
//dto or map => { }
}
💻 출력
<string>
출력 @ResponseBody
@RequestMapping("/test/json4")
public List<String> json4(){
List<String> names = new ArrayList<>();
names.add("김구라");
names.add("해골");
names.add("원숭이");
return names;
//List => [ ]
//List<string> => ["xxx","xxx"....]
}
💻 출력
<Dto>
or List<map>
@ResponseBody
@RequestMapping("/test/json5")
public List<MemberDto> json5(){
List<MemberDto> list = new ArrayList<>();
list.add(new MemberDto(1,"김구라","노량진"));
list.add(new MemberDto(2,"해골","행신동"));
list.add(new MemberDto(3,"원숭이","동물원"));
return list;
//List<Dto> or List<map> => [{},{},.....]
}
💻 출력
@ResponseBody
@RequestMapping("/test/json6")
public List<Map< String, Object>> json6(){
List<Map<String, Object>> list = new ArrayList<>();
Map<String, Object> map1 = new HashMap<>();
map1.put("num",1);
map1.put("name", "김구라");
map1.put("addr", "노량진");
Map<String, Object> map2 = new HashMap<>();
map2.put("num",2);
map2.put("name", "해골");
map2.put("addr", "행신동");
Map<String, Object> map3 = new HashMap<>();
map3.put("num",3);
map3.put("name", "원숭이");
map3.put("addr", "동물원");
list.add(map1);
list.add(map2);
list.add(map3);
return list;
//List<Dto> or List<map> => [{},{},.....]
}
💻 출력