-
[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반응형'Java > 기타' 카테고리의 다른 글
[Java] JDOM2을 이용한 XML(문자열, 파일) 파싱 (0) 2021.09.23 [JAVA] HttpURLConnection GET/POST 방식 (0) 2021.07.04 [Java] Casting, valueOf, toString 비교 (0) 2020.03.17 [Java] List 중복 제거 (HashSet, TreeSet, Stream) (0) 2019.12.16 [Java] equals 메서드 (0) 2019.09.29