개인적인 정리

데이타를 json으로 출력하기 - 1 본문

전자정부표준프레임워크

데이타를 json으로 출력하기 - 1

yeon.Biju 2021. 2. 17. 20:30

전자정부표준 프레임워크에서 데이타를 json 형태로 출력하는 방법에 대해서 생각해보고 있다.

 

json으로 데이타를 출력하기 위해서 Controller 는 아래와 같다고 해두자.

json을 Controller 에서 출력하기 위해서는 @ResponseBody를 써야 한다.

그리고 @RequestMappingproduces="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

 

Comments