지난번에 java에서 json을 쉽게 생성하는 법을 포스팅한 적이 있다.[바로가기]
오늘은 json을 java에서 파싱하는 방법에 대한 설명이다.
java에서 json을 파싱하여 사용하는 방법으로는 여러가지 라이브러리가 존재한다.
대표적으로 많이 사용하는게 JsonObject 인데, 오늘 내가 소개할 방법은 기존에 소개한 json 생성과 마찬가지로
jackson-json 라이브러리를 사용하는것이다.
나는 개인적으로 map 같은 데이터 형태를 선호한다. 단지 사용하기 편해서랄까?
그런 의미로 json을 map 으로 변환해 보겠다. 일단 라이브러리를 다운받아 클래스패스에 등록하자.
예제로 사용할 json 샘플은 다음과 같다.
{ |
1. json to map 코드
import java.io.IOException; import java.util.HashMap; import org.codehaus.jackson.JsonParseException; import org.codehaus.jackson.map.JsonMappingException; import org.codehaus.jackson.map.ObjectMapper; public class JsonToMap { public static void main(String[] args) { /** { "name" : { "first" : "Joe", "last" : "Sixpack" }, "gender" : "MALE", "verified" : false, "userImage" : "Rm9vYmFyIQ==" } */ StringBuffer sbuf = new StringBuffer(); sbuf.append("{") ; sbuf.append("\"name\" : { \"first\" : \"Joe\", \"last\" : \"Sixpack\" },") ; sbuf.append("\"gender\" : \"MALE\",") ; sbuf.append("\"verified\" : false,") ; sbuf.append("\"userImage\" : \"Rm9vYmFyIQ==\"") ; sbuf.append("}") ; try { HashMap<String, Object> rs = new ObjectMapper().readValue(sbuf.toString(), HashMap.class) ; System.out.println("==hashmap 출력==") ; System.out.println(rs) ; System.out.println() ; String gender = (String)rs.get("gender") ; boolean verified = (Boolean)rs.get("verified") ; HashMap<String, Object> name = (HashMap)rs.get("name") ; System.out.println("==변수 출력==") ; System.out.println(gender) ; System.out.println(verified) ; System.out.println("first name : " + name.get("first")) ; System.out.println("last name : " + name.get("last")) ; } catch (JsonParseException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
2. 출력 결과
==hashmap 출력== |
Tip)다음은 Jackson-json 에서 제공하는 데이터 형식에 관한 내용이다.
JSON Type |
Java Type |
object |
LinkedHashMap<String,Object> |
array |
ArrayList<Object> |
string |
String |
number (no fraction) |
Integer, Long or BigInteger (smallest applicable) |
number (fraction) |
Double (configurable to use BigDecimal) |
true|false |
Boolean |
null |
null |
'Language > Java / JSP' 카테고리의 다른 글
[JSP] 이미지 사이즈(width, height) 알아내기 (0) | 2014.08.07 |
---|---|
[Java] SMTP 메일전송 한글깨짐 해결 (0) | 2014.08.07 |
[Java] javax.net.ssl.SSLProtocolException: handshake alert: unrecognized_name (2) | 2014.08.05 |
[Java] URL 읽어오기 (0) | 2014.08.01 |
[Java] 엑셀 파일 만들기 (0) | 2014.08.01 |