Search Results for 'Json to Object'

1 POSTS

  1. 2012.02.20 Jacson 을 이용한 복합적인 Json 문자열을 Java Object로 변환하기 1

앞단의 글은 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 객체로 변환하여 처리한것이 다음과 같다.

private void parsingJacson(String jsonStr)
{
  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 파일일 필요하다.

jackson-core-asl-1.9.4.jar

 

jackson-mapper-asl-1.9.4.jar

 


Map 형태로 분석해 주기 때문에 큰 난이도 없이 간단하게 파싱한 데이터를 처리할수 있어서 직관적인면이 참 좋다.

참고사이트 : http://stove99.tistory.com/20