본문 바로가기

Java & Spring

자바 Map을 Json으로 변환시 키로 정렬하기

json object는 정렬되지 않는 key,value의 집합이다.

일반적으로 자바에서 json library를 이용하여 map을 json형태의 string으로 변환시 정렬이 이루어지지 않는다. 

jackson library를 이용하는 경우 키를 이용하여 정렬된 형태로 구성하고 싶다면 아래와 같이 ObjectMapper 클래스의 configure 메소드를 이용하여 다음과 같이 설정하면 된다.

configure(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS, true);

다음은 샘플 코드이다.

        Map<String, Object> map = new HashMap<String, Object>();
        map.put("park", "17");
        map.put("kim", "15");
        map.put("lee", "23");
        map.put("an", "11");
        map.put("jin", "54");

        ObjectMapper om = new ObjectMapper();
        om.configure(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS, true); //key로 정렬 설정
        String jsonStr = om.writeValueAsString(map); // map을 json 형태의 string으로 변환
        System.out.println(jsonStr);


다른 방법으로는 Map의 구현체를 TreeMap으로 변환하면 별다른 설정을 하지 않고도 key로 정렬된 형태로 변환할 수 있다.