Java 에서 JSON 을 처리하기 위한 라이브러리는 많이 있겠지만 요즘은 사람들이 Jackson 라이브러리를 많이 쓰는것 같다.

프로젝트 홈페이지(http://jackson.codehaus.org/)에 가보면 "High-performance JSON processor!" 요런 문구가 제일 상단에 떡 있는걸 봐서는 성능도 좋은것 같다!  

일단 그냥 써보자. 계속 쓰다보면 잘 알게 된다.

먼저 라이브러리를 써묵기 위해서 jar 파일을 받아야 한다. 프로젝트 홈페이지 다운로드 메뉴(http://wiki.fasterxml.com/JacksonDownload)로 가서  

쭉 있는것들중에 core-asl 과 mapper-asl 을 다운로드 받아 클래스 패스가 참조하는 폴더에 복사해 주면된다.

웹 프로젝트 같은 경우 WEB-INF/lib 디렉토리에 복사하면 되긋다~

메이븐 프로젝트일 경우는 간단히  pom.xml 에

1
2
3
4
5
<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-asl</artifactId>
    <version>1.8.5</version>
</dependency>
를 추가해 주면 사용할 수 있다. 

지금 현재 최신 버전이 1.8.5 이기 때문에 version 란에다 1.8.5를 적어준 것이고 나중에 또 업데이트가 될것이니

 http://mvnrepository.com/artifact/org.codehaus.jackson/jackson-mapper-asl 여기에서 확인해 보고 최신버전으로 바꿔주면 될것이다.


간단한 샘플을 보자.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 맵에 데이터들이 들어가 있는 형태
Map dummyData1 = new HashMap();
dummyData1.put("value1", "값1");
dummyData1.put("value2", "값2");
 
ObjectMapper om = new ObjectMapper();
 
try {  
    System.out.println(om.defaultPrettyPrintingWriter().writeValueAsString(dummyData1));
} catch (JsonGenerationException e) {  
    e.printStackTrace();
} catch (JsonMappingException e) { 
    e.printStackTrace();
} catch (IOException e) {  
    e.printStackTrace();
}
출력결과
1
"value1" : "값1""value2" : "값2"}
Jackson 라이브러리로 하는 짓들의 대부분은 ObjectMapper 라는 클래스의 인스턴스 생성을 한다음에 한다.

생성된 고것을 가지고 Json 문자열을 객체로 변환한다던가 객체를 JSON 문자열로 변환한다던가 한다. 뭐 다른 쓸만한 것도 많을 것이다. 
뭐 아직 많이 모르니깐~

아무튼 Map 이나 List에 들어가 있는 데이터들을 쪽바로 잘 변환해 준다. 

물론 getter 와 setter 메소드 시리즈가 있는 도메인 오브젝트, 
예를 들어 User, Account 뭐 이런 종류의 오브젝트도 writeValueAsString 메소드의 파라메터로 넣으면 잘 변환된다.


아무튼~ 각설하고~ List 인 경우도 한번 해보자

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// List 에 맵이 들어가 있는 형태
List dummyData2 = new ArrayList();
Map m = new HashMap();
m.put("value1", "값1");
m.put("value2", "값2");
dummyData2.add(m);
 
m = new HashMap();
m.put("value1", "값3");
m.put("value2", "값4");
dummyData2.add(m);
 
ObjectMapper om = new ObjectMapper();
 
try {  
    System.out.println(om.defaultPrettyPrintingWriter().writeValueAsString(dummyData2));
} catch (JsonGenerationException e) {  
    e.printStackTrace();
} catch (JsonMappingException e) { 
    e.printStackTrace();
} catch (IOException e) {  
    e.printStackTrace();
}
출력결과
1
[ {  "value1" : "값1""value2" : "값2"}, {  "value1" : "값3""value2" : "값4"} ]
역시 기대했던 대로 잘 변환된다. 

위의 샘플들은 오브젝트를 String으로 변환하는 샘플이고 String 으로 변환활 필요가 없으면(웹요청처리, JSON 파일로 저장하는 경우)  ObjectMapper 클래스의 writeValue() 메소드를 이용해 OutputStream이나 Writer 에 Stream으로 출력해 버려도 된다.
1
2
3
ObjectMapper om = new ObjectMapper();
 
om.writeValue(response.getWriter(), dummyData);


출처 - http://stove99.tistory.com/12




'Development > JavaScript' 카테고리의 다른 글

javascript - 정규 표현식(Regular Expression)  (1) 2012.06.21
spin.js 예제  (0) 2012.06.21
Javascript - return true; return false;  (0) 2012.05.23
javascript - 유효성 검사  (0) 2012.05.23
cookie 생성 및 삭제  (0) 2012.05.22
Posted by linuxism
,