Map 을 Json으로 변환하거나, Json을 Map으로 변환하는 공통 유틸이 필요할 때가 있다.

이럴 때 참고할 수 있도록 변환하는 공통 유틸을 가지고 있으면 매우 유용하다.

먼저 Map을 Json형태로 변환하는 방법, List<Map>을 jsonArray와 jsonString 변환하는 방법,

JsonObejct 와 JsonArray 를 Map 또는 List<Map> 으로 변환하는 방법을 알아보겠다.

 

1. Map을 json으로 변환

    /**
     * <PRE>
     * Map을 json으로 변환한다.
     * </PRE>
     * 
     * @param map Map<String,Object>
     * @return JSONObject
     */
    @SuppressWarnings("unchecked")
    public static JSONObject getJSONObjectFromMap( Map<String,Object> map ) {

        JSONObject jsonObject = new JSONObject();

        for( Map.Entry<String,Object> entry : map.entrySet() ) {
            jsonObject.put( entry.getKey(), entry.getValue());
        }

        return jsonObject;
    }

    /**
     * <PRE>
     * Map을 json으로 변환한다.
     * </PRE>
     *
     * @param map Map<String,Object>
     * @return JSONObject
     */
    public static String getJsonStringFromMap( Map<String,Object> map ) {

        JSONObject jsonObject = getJSONObjectFromMap( map );

        return jsonObject.toJSONString();
    }

 

2. List<Map>을 jsonArray 로 변환

    /**
     * <PRE>
     * List<Map>을 jsonArray로 변환한다.
     * </PRE>
     *
     * @param list List<Map<String,Object>>
     * @return JSONArray
     */
    @SuppressWarnings("unchecked")
    public static JSONArray getJsonArrayFromList( List<Map<String,Object>> list ) {

        JSONArray jsonArray = new JSONArray();

        for( Map<String,Object> map : list ) {
            jsonArray.add( getJsonStringFromMap( map ) );
        }

        return jsonArray;
    }

 

3. List<Map>을 jsonString으로 변환

    /**
     * <PRE>
     * List<Map>을 jsonString으로 변환한다.
     * </PRE>
     *
     * @param list List<Map<String,Object>>
     * @return String
     */
    public static String getJsonStringFromList( List<Map<String,Object>> list ) {

        JSONArray jsonArray = getJsonArrayFromList( list );

        return jsonArray.toJSONString();
    }

 

4. Map<String,Object> 또는 List<Map<String,Object>> 형식의 jsonString을 해당 Object으로 변환 

    /**
     * <PRE>
     * Map<String,Object> 나, List<Map<String,Object>> 형식의 jsonString을 
     * 해당 Object으로 변환한다.
     * 리턴 받을때 형변환 필요
     * </PRE>
     *
     * @param jsonString String
     * @return Object
     * @throws ParseException 
     */
    public static Object getObjectFromJsonString( String jsonString ) throws ParseException {

        JSONParser parser = new JSONParser();

        Object object = parser.parse( jsonString );

        return object;
    }

 

5.  JsonObject를 Map<String,Object>으로 변환

    /**
     * <PRE>
     * JsonObject를 Map<String,Object>으로 변환한다.
     * </PRE>
     *
     * @param jsonObject JSONObject
     * @return Map<String,Object>
     */
    @SuppressWarnings("unchecked")
    public static Map<String,Object> getMapFromJsonObject( JSONObject jsonObject ) {

        Map<String,Object> map = null;

        try {
            map = new ObjectMapper().readValue( jsonObject.toJSONString(), Map.class ) ;
        } catch ( JsonParseException e ) {
            LOGGER.error( e.getMessage().replaceAll( "[\r|\n]", "" ) );
        } catch ( JsonMappingException e ) {
            LOGGER.error( e.getMessage().replaceAll( "[\r|\n]", "" ) );
        } catch ( IOException e ) {
            LOGGER.error( e.getMessage().replaceAll( "[\r|\n]", "" ) );
        }

        return map;
    }

 

6. JsonArray를 List<Map<String,Object>>으로 변환

    /**
     * <PRE>
     * JsonArray를 List<Map<String,Object>>으로 변환한다.
     * </PRE>
     *
     * @param jsonArray JSONArray
     * @return List<Map<String,Object>>
     */
    public static List<Map<String,Object>> getListMapFromJsonArray( JSONArray jsonArray ) {

        List<Map<String,Object>> list = new ArrayList<>();

        if ( jsonArray != null ) {

            int jsonSize = jsonArray.size();

            for( int i = 0; i < jsonSize; i++ ) {

                Map<String,Object> map = JsonUtil.getMapFromJsonObject( ( JSONObject ) jsonArray.get(i) );

                list.add( map );
            }
        }

        return list;
    }
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기