2022-07-18
simple.JSONObject 라이브러리 사용시 jsonobject 를 map 형태의 객체로 변경하는 방법에 대하여 알아보자.
- 소스코드
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.json.JSONException;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
public class TestService {
//json을 받아 hashmap으로 변환하는 메소드
public static Map<String, Object> jsonToMap(JSONObject json) throws JSONException {
Map<String, Object> retMap = new HashMap<String, Object>();
if(json != null) {
retMap = toMap(json);
}
return retMap;
}
//json객체 안에 또다른 json 객체가 있을 경우
public static Map<String, Object> toMap(JSONObject object) throws JSONException {
Map<String, Object> map = new HashMap<String, Object>();
@SuppressWarnings("rawtypes")
Set keys = object.keySet();
@SuppressWarnings("unchecked")
Iterator<String> keysItr = keys.iterator();
while(keysItr.hasNext()) {
String key = keysItr.next();
Object value = object.get(key);
if(value instanceof JSONArray) {
value = toList((JSONArray) value);
}
else if(value instanceof JSONObject) {
value = toMap((JSONObject) value);
}
map.put(key, value);
}
return map;
}
//json객체 안에 json 배열이 있을경우
public static List<Object> toList(JSONArray array) throws JSONException {
List<Object> list = new ArrayList<Object>();
for(int i = 0; i < array.size(); i++) {
Object value = array.get(i);
if(value instanceof JSONArray) {
value = toList((JSONArray) value);
}
else if(value instanceof JSONObject) {
value = toMap((JSONObject) value);
}
list.add(value);
}
return list;
}
}
참고 링크 : https://stackoverflow.com/questions/21720759/convert-a-json-string-to-a-hashmap
메인 이미지 출처 : Photo by Pawel Czerwinski on Unsplash