티스토리 뷰

SW개발

Json parser - Jackson parser 사용

개소왕 2017. 2. 8. 17:04

* 개요 

일반적인 JSON 파서는 객체를 속성별로 일일이 값을 넣어줘야 한다.

ex] jsonObject.put("col1", obj.getCol1() );

 jsonObject.put("col2", obj.getCol2() ); 

 jsonObject.put("col3", obj.getCol2() ); 

...


하지만 Jackson파서Object 를 통째JSON으로 바꾸고, 그대로 다시 객체로 바꿀 수 있는 장점이 있다.




* 다운로드

http://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core

http://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind

http://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations

위 내용으로 maven 등 에 추가하거나, 

jar 다운 받아서 빌드패스에 추가든지, 

웹 PRJ 라면 WEB-INF/lib 에 때려박든지 하면 된다.

jar 는 각 페이지에서 1개씩 총 3개다.


2017년 현재 최신 버전은 2.8.6이다.

테스트는 2.0.6 으로 했다.

- 각 파일의 용도 참고 : http://blog.naver.com/PostView.nhn?blogId=gracefulife&logNo=220515129440



* 객체를 JSON 으로 바꾸기 

// MapInfo는 테스트를 위한 객체이다. 

MapInfo mi = new MapInfo();

mi.setAddress("경기도 하남시");

mi.setMapX(127.998877d);

mi.setMapY(80.778899d);

// OBJ ==> JSON

ObjectMapper om = new ObjectMapper();

String sJson = om.writeValueAsString(mi);

   System.out.println(sJson);


결과

{"mapX":127.998877,"mapY":80.778899,"address":"경기도 하남시"}"



사실상 두줄만 있으면 된다.




* JSON String 을 객체로 바꾸기


// 위에서 바꾼 JSON String

  String sJson = "{\"mapX\":127.998877,\"mapY\":80.778899" + ",\"address\":\"경기도 하남시\"}";

// JSON => OBJ

ObjectMapper om = new ObjectMapper();

MapInfo mi = om.readValue(sJson, MapInfo.class);

// 출력

System.out.println("mi.address " + mi.getAddress());

System.out.println("mi.mapX " + mi.getMapX());

System.out.println("mi.mapY " + mi.getMapY());


결과

mi.address 경기도 하남시

mi.mapX 127.998877

mi.mapY 80.778899




JSON 을 객체로 바꾸는것도 마찬가지.





* List 를 JSON 으로 바꾸기

// 데이터 생성 생략함.

   ObjectMapper om = new ObjectMapper();
String sJson = om.writeValueAsString(lst);

System.out.println(sJson);


결과
[{"mapX":127.998877,"mapY":80.778899,"address":"경기도 하남시"},{"mapX":127.55557,"mapY":80.7333339,"address":"경기도 하남시2"}]





* JSON 을 List로 바꾸기

ObjectMapper om = new ObjectMapper();
ArrayList<MapInfo> lstMi = om.readValue(sJson, om.getTypeFactory().constructCollectionType(ArrayList.class, MapInfo.class));



* 기타]  java.lang.UnsupportedClassVersionError: com/fasterxml/jackson/databind/ObjectMapper : Unsupported major.minor version 51.0

- 테스트위해 사용하던 Project 의 자바버전은 1.6 이었고, 

잭슨 파서는 2.8.6 이었다.

2.8.6 은 최소 자바 1.7 ( = version 51.0 ) 이상이 필요해서 난 오류다.

그래서 구버전으로 바꿔서 테스트했다. (2.3.5)


- 참고 : http://lng1982.tistory.com/185

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
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
글 보관함