달력

3

« 2024/3 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
2012. 2. 27. 18:22

Spring 에서 JSON 사용하기 I.lib()/I.lib(Spring)2012. 2. 27. 18:22

.. .. ..
우선 찾아본 바로는 spring에서 지원하는 json데이타 처리법에는 크게 3가지가 있다.( 물론 더 있는거같다)

1. http://www.ibm.com/developerworks/kr/library/wa-restful/index.html

메세지 컨버터를 이용한 방법.
응답 메시지를 json데이타로 컨버팅하는 방법이다.
젤 간단하고 광역적으로 쓸수 있다.

2. http://whiteship.tistory.com/2297

MappingJacksonJsonView 를 이용한 방법
이 방법은 세번째랑 비슷한데 Jackson에서 제공하는 json뷰를 쓴다는거만 틀리고 같다.
위에꺼랑 맞먹게 간단한데.... 좀더 불편한건 ModelAndView를 만들때마다 jsonView로 만든 뷰의 이름으로 생성해야 된다는거

3.
http://ultteky.egloos.com/10496535

그동안 자주 써왔던 json-lib를 이용한 방법이다.
jackson도 안되던 부분이 이놈 뷰를 쓰니까 됐다....슈발...
2번이나 똑같은데 단지 라이브러리 종류가 틀리다.

[펌] : http://msfury.tistory.com/117





------------------------------------------------------------------------------------------------------
3번 json-lib를 사용하는 방법

서버에서 클라이언트로 리턴할 오브젝트를 Json형태로 변환 하거나 또는 그반대로
Json 데이터를 해당 오브젝트로 변환하는 라이브러리가 필요 합니다. 그중에서
Json-lib를 사용 합니다 .
(해당 사이트에 접속하면 다양한 json 라이브러리를 다운 받을 수 있습니다. ).
여기서 최신 버전으로 다운로드를 받습니다.
다운로드 후 이클립스 프로젝트에
라이브러리를 추가 합니다.
웹 사이트 : http://json-lib.sourceforge.net/
다운로드 : http://sourceforge.net/projects/json-lib/files/
사용법은 해당 사이트를 참고 하시면 됩니다.
  • 스프링 전용 JsonView 다운 받기
아래의 사이트로 접속 후 화면 맨 하단을 보면 "json-lib-ext-spring" 가 있습니다.
거기서 최신 버전의 라이브러리를 다운로드 후 이클립스 프로젝트에
추가 합니다.
다운로드 : http://sourceforge.net/projects/json-lib/files/

  • JsonView 스프링 빈 설정
아래와 같이 JsonView를 빈으로 설정 합니다.
<bean id="jsonView" class="net.sf.json.spring.web.servlet.view.JsonView"/>

  • ViewResolver 설정

JsonView를 인식 하기 위해서 "BeanNameViewResolver"를 설정 합니다.
WebApplication에서는 여러 Resolver가 존재 할수 있기 때문에
우선 순위를 "0"으로 설정해서 최우선으로 설정 합니다.
    <bean id="beanNameResolver"
class="org.springframework.web.servlet.view.BeanNameViewResolver"
p:order="0" />


  • Controller Code
아래의 코드를 보면 매우 평범합니다. 어떤한 라이브러리 참조도
없이 평소처럼 코딩 하면 됩니다. 모든 ajax 처리는 JsonView가
처리 함으로써 단지 JsonView가 선언된 스프링 빈 id를
ModelAndView의 "setViewName" 메서드에 선언만
하면 됩니다.


public final ModelAndView handlerRequest(final HttpServletRequest request,
final HttpServletResponse response) throws Exception {
ModelAndView modelAndView = new ModelAndView();

DummyMember dummyMember1 = new DummyMember();
dummyMember1.setId("xxxxxxx");

DummyMember dummyMember2 = new DummyMember();
dummyMember2.setId("yyyyyy");

List list = new ArrayList();
list.add(dummyMember1);
list.add(dummyMember2);

Map resultMap = new HashMap();
resultMap.put("result1", list);
resultMap.put("result2", dummyMember1);

modelAndView.addAllObjects(resultMap);
modelAndView.setViewName("jsonView");
return modelAndView;
}

※ 샘플 도메인
public class DummyMember {
private String id;

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}
}


  • 결과 JSON 패킷

{"result2":{"id":"xxxxxxx"},"result1":[{"id":"xxxxxxx"},{"id":"yyyyyy"}]}

customizing이 필요하면 JsonView 클래스를 상속 받은 후에 "renderMergedOutputModel"
메서드를 override 하시거 아니면 직접 다운로드 사이트에서
소스를 받은 후에 수정 후 적용 하시면 됩니다.
.
:
Posted by .07274.