Jacson 을 이용한 복합적인 Json 문자열을 Java Object로 변환하기
Posted 2012. 2. 20. 03:54앞단의 글은 Gson을 이용한 Json 문자열을 처리한 것이라면 이번엔 Jacson라이브러리를 이용한 문자열 처리다.
다음과 같은 형태의 Json 문자열을 넘겨받았다고 하자.
"exData1": {
"uIdx": 123,
"uId": "abcdefg",
"nickName": "길동이",
"currentStage": 3
},
"exData2": {
"cAmount": 13,
"hType": "Yes"
},
"data": {
"index": 2,
"status": "default"
},
"success": true,
"messages": [
{
"nextStage": 4,
"nextPower": 85,
"type": "Jump"
},
{
"message": "점프되었습니다.",
"type": "msg"
}
]
}
Object Type과 Premitive, 그리고 배열형태까지 다양하게 분포되어 있다. 이를 Jacson 라이브러리를 이용하여 Java 객체로 변환하여 처리한것이 다음과 같다.
{
JavaData javaData = null;
ObjectMapper om = new ObjectMapper();
try
{
// Map<String, Object> m = om.readValue(jsonStr,new TypeReference<Map<String, Object>>(){});
JsonNode root = om.readTree(jsonStr);
// 배열에 있는 값들 가져오기
boolean success = root.path("success").getBooleanValue();
if(success)
{
JsonNode data = root.path("data");
JsonNode ext1 = root.path("extData1");
JsonNode ext2 = root.path("extData2");
JsonNode ext3 = root.path("extData3");
System.out.println("uIdx = "+ext1.path("uIdx").asInt();
System.out.println("nickName = "+ext1.path("nickName").asText();
List<String> typeList = root.path("messages").findValuesAsText("type");
int arraySize = typeList.size();
for (String string : typeList)
{
System.out.println("type::::" + string);
}
}
}
catch (Exception e)
{
// TODO: handle exception
}
}
보다 자세한 설명은 Jacson 의 홈페이지 http://jackson.codehaus.org/ 이곳을 참조하자.
위의 소스를 구동하기 위해서는 다음의 두개의 jar 파일일 필요하다.
Map 형태로 분석해 주기 때문에 큰 난이도 없이 간단하게 파싱한 데이터를 처리할수 있어서 직관적인면이 참 좋다.
참고사이트 : http://stove99.tistory.com/20
'개발노트 > JAVA & JSP' 카테고리의 다른 글
socket 프로그램과 방화벽은 상극 (0) | 2012.08.16 |
---|---|
제12회 자바개발자 컨퍼런스(JCO) 발표자료 모음 (0) | 2012.02.23 |
복합적인 Collection 형태의 Json 문자열을 Gson을 이용하여 java 객체로 변환하기 (0) | 2012.02.19 |
몇분전, 몇시간전, 몇일전, 몇달전...을 표현하는 util (3) | 2011.03.03 |
디자인 패턴을 포함한 무료강좌 (0) | 2010.05.07 |
- Filed under : 개발노트/JAVA & JSP