ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바 ObjectMapper
    Java(자바) 2015. 5. 7. 19:29

    라이브러리 다운로드

    http://wiki.fasterxml.com/JacksonDownload






    Map - JSON 변환


    ObjectMapper.readValue( arg, type )

    • arg: 변환대상
    • type: 대상을 어떤 타입으로 변환할것인지 명시한다. JavaClass 혹은 Class객체, TypeReference객체가 올 수 있다.

    ex)

    mapper.readValue(arg, ArrayList.class);

    mapper.readValue(argnew ArrayList<HashMap<String, String>>().getClass())

    mapper.readValue(arg, new TypeReference<ArrayList<HashMap<String, String>>>(){})


    ● Map

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    import com.fasterxml.jackson.databind.ObjectMapper;
     
    public class Test2 {
        public static void main(String[] args) throws Exception {
     
            ObjectMapper mapper = new ObjectMapper();
     
            HashMap<StringString> map = new HashMap<StringString>();
            map.put("name""steave");
            map.put("age""32");
            map.put("job""baker");
     
            System.out.println(map);
            System.out.println(mapper.writeValueAsString(map));
        }
    }
     
    // {age=32, name=steave, job=baker}
    // {"age":"32","name":"steave","job":"baker"}
    cs

    맵형태의 값이 JSON 타입으로 변환된다. 자바스크립트에 JSON타입으로 넘겨줄 때 유용하다. 


    이와 반대로 JSON타입의 값을 맵 형태로 변환하려면 다음처럼 작성한다:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    import com.fasterxml.jackson.core.type.TypeReference;
    import com.fasterxml.jackson.databind.ObjectMapper;
     
    public class Test2 {
        public static void main(String[] args) throws Exception {
     
            ObjectMapper mapper = new ObjectMapper();
            HashMap<StringString> map = new HashMap<StringString>();
     
            String jsn = "{\"age\":\"32\",\"name\":\"steave\",\"job\":\"baker\"}";
            
            map = mapper.readValue(jsn, 
                    new TypeReference<HashMap<StringString>>() {});        
            
            System.out.println(map);
        }
    }
     
    // {name=steave, age=32, job=baker}
    cs


    ● List<Map>

    view에 전달할 model이 List<map<?, ?>> 타입일 때 이를 JSON으로 변환하는 방법을 알아보자.

    사용방법은 크게 다르지 않고 writeValueAsString, readValue 메서드를 사용하되 타입 명시만 달리한다.

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    import com.fasterxml.jackson.core.type.TypeReference;
    import com.fasterxml.jackson.databind.ObjectMapper;
     
    public class Test2 {
        public static void main(String[] args) throws Exception {
     
            ObjectMapper mapper = new ObjectMapper();
     
            // map -> json
            ArrayList<HashMap<StringString>> list 
                    = new ArrayList<HashMap<String,String>>(); 
            
            HashMap<StringString> map = new HashMap<StringString>();
            map.put("name""steave");
            map.put("age""32");
            map.put("job""baker");
            list.add(map);
            
            map = new HashMap<StringString>();
            map.put("name""matt");
            map.put("age""25");
            map.put("job""soldier");
            list.add(map);
            
            System.out.println(mapper.writeValueAsString(list));
     
            
            // json -> map
            String jsn = "[{\"age\":\"32\",\"name\":\"steave\",\"job\":\"baker\"},"
                    + "{\"age\":\"25\",\"name\":\"matt\",\"job\":\"soldier\"}]";
            list = mapper.readValue(jsn, 
                    new TypeReference<ArrayList<HashMap<StringString>>>() {});        
            
            System.out.println(list);
        }
    }
     
     
    // [{"age":"32","name":"steave","job":"baker"},{"age":"25","name":"matt","job":"soldier"}]
    // [{name=steave, age=32, job=baker}, {name=matt, age=25, job=soldier}]


    'Java(자바)' 카테고리의 다른 글

    자바 상속 규칙(피터 코드)  (0) 2015.08.08
    자바 HttpSessionListener 정리  (2) 2015.07.07
    이클립스 단축키 모음!  (0) 2015.04.10
    자바 Statement 와 PreparedStatement의 차이점  (0) 2015.01.15
    자바 StringTokenizer !!  (0) 2014.09.26
Designed by Tistory.