ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JAVA] JSON 변환 (String, Map, List, JSONString, JSONObject, JSONArray)
    Java/기타 2021. 7. 4. 15:22
    반응형

    JSON 변환

    pom.xml

    라이브러리는 json-sample, jackson-databind를 사용하였습니다.

    <!-- https://mvnrepository.com/artifact/com.googlecode.json-simple/json-simple -->
    <dependency>
    	<groupId>com.googlecode.json-simple</groupId>
    	<artifactId>json-simple</artifactId>
    	<version>1.1.1</version>
    </dependency>
    
    <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
    <dependency>
    	<groupId>com.fasterxml.jackson.core</groupId>
    	<artifactId>jackson-databind</artifactId>
    	<version>2.12.3</version>
    </dependency>

     

    JsonUtils.java

    1. Map을 JSONString으로 변환

    2. List<Map>을 JSONString으로 변환

    3. String을 JSONObject를 변환

    4. JSONObject를 Map<String, String>으로 변환

    5. JSONArray를 List<Map<String, String>>으로 변환

    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Map;
    
    import org.json.simple.JSONArray;
    import org.json.simple.JSONObject;
    import org.json.simple.parser.JSONParser;
    import org.json.simple.parser.ParseException;
    
    import com.fasterxml.jackson.core.JsonParseException;
    import com.fasterxml.jackson.databind.JsonMappingException;
    import com.fasterxml.jackson.databind.ObjectMapper;
    
    /**
     * JSON 관련된 유틸리티 클래스
     */
    public class JsonUtils { 
    
    	/**
    	 * Map을 JSONString으로 변환
    	 * 
    	 * @param map
    	 * @return String
    	 */
    	@SuppressWarnings("unchecked")
    	public static String getJsonStringFromMap(Map<String, Object> map) {
    
    		JSONObject json = new JSONObject();
    
    		for (Map.Entry<String, Object> entry : map.entrySet()) {
    			json.put(entry.getKey(), entry.getValue());
    		}
    
    		return json.toJSONString();
    	}
    
    	/**
    	 * List<Map>을 JSONString으로 변환
    	 * 
    	 * @param list
    	 * @return String
    	 */
    	@SuppressWarnings("unchecked")
    	public static String getJsonStringFromList(List<Map<String, Object>> list) {
    
    		JSONArray jsonArray = new JSONArray();
    
    		for (Map<String, Object> map : list) {
    			jsonArray.add(getJsonStringFromMap(map));
    		}
    
    		return jsonArray.toJSONString();
    	}
    	
    	/**
    	 * String을 JSONObject를 변환
    	 * 
    	 * @param jsonStr
    	 * @return jsonObject
    	 */
    	public static JSONObject getJsonObjectFromString(String jsonStr) { 
    	
    		JSONObject jsonObject = new JSONObject();
    		
    		JSONParser jsonParser = new JSONParser();
    		
    		try {
    			
    			jsonObject = (JSONObject) jsonParser.parse(jsonStr);
    			
    		} catch (ParseException e) {
    			e.printStackTrace();
    		}
    		
    		return jsonObject;
    	}
    	
    	/**
    	 * JSONObject를 Map<String, String>으로 변환
    	 * 
    	 * @param jsonObject
    	 * @return map
    	 */
    	@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) {
    			e.printStackTrace();
    		} catch (JsonMappingException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		
    		return map;
    	}
    	
    	/**
    	 * JSONArray를 List<Map<String, String>>으로 변환
    	 * 
    	 * @param jsonArray
    	 * @return list
    	 */
    	public static List<Map<String, Object>> getListMapFromJsonArray(JSONArray jsonArray) {
    
    		List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
    
    		if (jsonArray != null) {
    
    			int jsonSize = jsonArray.size();
    
    			for (int i = 0; i < jsonSize; i++) {
    
    				Map<String, Object> map = getMapFromJsonObject((JSONObject)jsonArray.get(i));
    				list.add(map);
    			}
    		}
    
    		return list;
    	}
    }

     

    JsonUtilsTest.java

    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import org.json.simple.JSONArray;
    import org.json.simple.JSONObject;
    import org.junit.Before;
    import org.junit.Test;
    
    public class JsonUtilsTest {
    	
    	Map<String, Object> map = null;	
    	List<Map<String, Object>> list = null;
    	
    	String jsonStr = "{\"key01\":\"value01\",\"key02\":\"value02\",\"key03\":\"value03\",\"key04\":\"value04\",\"key05\":\"value05\"}";
    	
    	JSONObject jsonObject = null;	
    	JSONArray jsonArray = null;
    	
    	@Before
    	public void initJsonStringParam() {
    		
    		map = new HashMap<String, Object>();
    		map.put("key01", "value01");
    		map.put("key02", "value02");
    		map.put("key03", "value03");
    		map.put("key04", "value04");
    		map.put("key05", "value05");
    		
    		list = new ArrayList<Map<String, Object>>(); 
    		list.add(map);		
    		list.add(map);		
    		list.add(map);
    	}
    	
    	@SuppressWarnings("unchecked")
    	@Before
    	public void initJsonObjectParam() {
    		
    		jsonObject = new JSONObject();
    		jsonObject.put("key01", "value01");
    		jsonObject.put("key02", "value02");
    		jsonObject.put("key03", "value03");
    		jsonObject.put("key04", "value04");
    		jsonObject.put("key05", "value05");
    		
    		jsonArray = new JSONArray();
    		jsonArray.add(jsonObject);
    		jsonArray.add(jsonObject);
    		jsonArray.add(jsonObject);
    	}
    
    	@Test
    	public void testGetJsonStringFromMap() {
    		
    		String jsonStr = JsonUtils.getJsonStringFromMap(map);
    			
    		System.out.println("JsonStringFromMap : " + jsonStr);
    	}
    
    	@Test
    	public void testGetJsonStringFromList() {
    
    		String jsonStr = JsonUtils.getJsonStringFromList(list);
    		
    		System.out.println("JsonStringFromList : " + jsonStr);
    	}
    	
    	
    	@Test
    	public void testGetJsonObjectFromString() {
    		
    		JSONObject jsonObject = JsonUtils.getJsonObjectFromString(jsonStr);
    		
    		System.out.println("JsonObjectFromString : " + jsonObject);
    	}
    	
    	
    	@Test
    	public void testGetMapFromJsonObject() {
    	
    		Map<String, Object> map = JsonUtils.getMapFromJsonObject(jsonObject);
    		
    		System.out.println("MapFromJsonObject : " + map);
    	}
    	
    	@Test
    	public void testGetListMapFromJsonArray() {
    	
    		List<Map<String, Object>> list = JsonUtils.getListMapFromJsonArray(jsonArray);
    		
    		System.out.println("ListMapFromJsonArray : " + list);
    	}
    }

     

    JSON library json-simple 사용법 - https://tychejin.tistory.com/139
    JSON library Gson 사용법 - https://tychejin.tistory.com/136
    JSON library Jackson 사용법 - https://tychejin.tistory.com/134

    반응형

    댓글

Designed by Tistory.