티스토리 뷰
* 개요
일반적인 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
* 기타] 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)
'SW개발' 카테고리의 다른 글
톰캣 org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 15 (0) | 2017.02.12 |
---|---|
Gradle 프로젝트, Eclipse 로 가져오기 (2) | 2017.02.10 |
Gradle 설치 (0) | 2017.02.10 |
java기초] List의 기능 요약 (0) | 2017.02.07 |
java기초] ArrayList, LinkedList 성능 비교 (0) | 2017.02.07 |