데이타를 json으로 출력하기 - 1
전자정부표준 프레임워크에서 데이타를 json 형태로 출력하는 방법에 대해서 생각해보고 있다.
json으로 데이타를 출력하기 위해서 Controller 는 아래와 같다고 해두자.
json을 Controller 에서 출력하기 위해서는 @ResponseBody를 써야 한다.
그리고 @RequestMapping 에 produces="text/plain;charset=UTF-8" 해주면 한글이 깨지지 않는다.
1
2
3
4
5
6
|
@RequestMapping(value="/jsonTest", produces="text/plain;charset=UTF-8")
@ResponseBody
public String jsonTest() throws Exception{
~~~~
}
|
cs |
첫번째로 생각해본 것은 json 데이타를 만들기 위해서 아래와같이 하드하게 문자열을 만들어주는 방법이다.
단순하지만 간단한 작업에는 효율적일 것 같아보인다.(사실 이렇게 한번도 안써봤다.)
간단한 응답을 받아야 하는 경우에는 나쁘진 않아 보이지만, 데이타가 길어진다면 다른 얘기가 될 수 있을 것이다.
1
2
3
4
5
6
7
8
9
|
@RequestMapping(value="/jsonTest", produces="text/plain;charset=UTF-8")
@ResponseBody
public String jsonTest() throws Exception{
String jsonString = "{\"result\":\""+ result +"\",\"msg\":\""+ msg +"\"}";
return jsonString;
}
|
cs |
어쨎거나 이 문자열을 하드하게 만드는 방법을 조금 더 확장해보면,
json 문자열 안에 vo, Map, 배열등의 객체의 데이타도 함께 출력할 수 있지 않을까?
아래코드에서 함께 출력해봤다.
@RequestMapping(value="/jsonTest", produces="text/plain;charset=UTF-8")
@ResponseBody
public String jsonTest() throws Exception{
MenuVO menuVO = new MenuVO();
Gson gson = new Gson();
String jsonString = "{\"result\":\""+result+"\",\"resultList\":"+ gson.toJson(menuVO) +"}";
return jsonString;
}
|
cs |
Gson 을 이용한 것이다.
사실 gson을 이 게시물을 작성하느라 처음 사용해봐서 아직 익숙하진 않다.
어쨎거나 위 코드에서 menuVO대신에 Map, List등의 객체들도 사용이 가능할 것이다.
혹은 아래와 같이 json 문자열을 vo만으로도 만들 수 있을 것이다.
1
2
3
4
5
6
7
8
9
10
|
@RequestMapping(value="/jsonTest", produces="text/plain;charset=UTF-8")
@ResponseBody
public String jsonTest() throws Exception{
Gson gson = new Gson();
String jsonString = gson.toJson(menuVO);
return jsonString;
}
|
cs |
Gson 에 대해서는 아래 URL을 참조한다.
https://github.com/google/gson
google/gson
A Java serialization/deserialization library to convert Java Objects into JSON and back - google/gson
github.com