[Java] JsonObject 를 Map(HashMap) 객체로 바꾸는 방법

2022-07-18


Photo by Pawel Czerwinski on Unsplash

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
 

Convert a JSON String to a HashMap

I'm using Java, and I have a String which is JSON: { "name" : "abc" , "email id " : ["abc@gmail.com","def@gmail.com","ghi@gmail.com"] } Then my Map in Java: Map<String, Object> retMap = new

stackoverflow.com


메인 이미지 출처 : Photo by Pawel Czerwinski on Unsplash