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;
}