본문 바로가기
programming/SpringJava

JSON.simple 을 이용하여 json 문자열 파싱하고 값 추출하기

by 개코 - 개발과 코딩 2021. 6. 25.

json 통신을 하는 프로그램들의 특징은 json 문자열을 이용하여 값을 주고 받고 처리를 한다. rest api를 제공하는 거의 모든 서비스가 그러한 형태이며 api로 호출된 값은 json.simple 같은 라이브러리를 이용하여 값을 파싱하고 추출하고 가공하여 컨텐츠 서비스를 하기도 한다.

 

json 문자열 파싱을 위한 라이브러리

json 문자열을 파싱하기 위한 라이브러리는 많다.

어떤 것을 사용해도 상관은 없다.

여기서는 JSON.simple을 이용하여 값을 추출할 뿐이다.

json 문자열은 키와 값으로 되어 있다 {key:value} 형태이기도 하다.

JSON.simple 은 mvnrepository 홈페이지에서 메이븐을 이용해 라이브러리를 얻을 수 있다.

 

▶ 자바 스프링 json 문자열 파싱과 조작을 위한 JSON.simple

 

JSON.simple 기본 사용방법

json.simple 을 사용하기 위한 방법은 간단하다.

아래의 순서를 따르면 어려울 것이 없다.

  1. JSONParser 객체를 생성한다.
  2. json문자열을 json객체로 형변환 파싱한다.
  3. 단순 객체의 경우 : JSONObject , 배열의 경우 JSONArray 를 사용한다.
  4. 변환된 json 객체를 get("key") 메서드를 사용하여 값을 추출한다.

 

예제 보기

아래의 코드는 json 결과값이 단순 문자열로 왔을 경우 처리하는 구문이다.

json 문자열을 JSONObject 로 파싱하고 key 값을 이용하여 값을 추출하고 있다.

JSONParser jsonParse = new JSONParser();

JSONObject jsonObject = (JSONObject)jsonParse.parse(jsonData);

System.out.println(jsonObject.get("key"));

아래의 코드는 json 결과값이 배열로 왔을 경우 처리하는 구문이다.

json 문자열을 JSONArray 로 파싱하고 반복문으로 배열을 각 JSONObject 값을 추출하고 있다.

JSONParser jsonParse = new JSONParser();

JSONArray jsonArray = (JSONArray)jsonParse.parse(jsonData);

for(int i=0; i < jsonArray.size(); i++) { 
	 
	JSONObject jsonObject = (JSONObject) jsonArray.get(i);
	System.out.println("----- [" + i + "]번째 json Data "); 
	System.out.println(jsonObject.get("key"));
}

역주행 중인 아이돌그룹 브레이브걸스를 예제로 샘플을 만들어 보자

그룹정보는 단일정보겠지만, 멤버정보는 배열로 처리할 수 있다.

배열의 경우 반복문으로 JSONArray 의 각 요소를 JSONObject로 파싱하여 사용하면 된다.

@RequestMapping(value = "/testjson", method = RequestMethod.GET)
public void TestJSON(Locale locale, Model model) throws NoSuchAlgorithmException, UnsupportedEncodingException {
	logger.info("Request Controller : TestRequestWithMarket.", locale);
	
	System.out.println("----- 걸그룹 정보 "); 
	
	String jsonObjectData = "{\"groupCode\":\"BRS\",\"groupName\":\"브레이브걸스\",\"alum\":\"Rollin\",\"company\":\"Brave Ent\"}";
			
	try {
        JSONParser jsonParse = new JSONParser();
        
        JSONObject jsonObject = (JSONObject)jsonParse.parse(jsonObjectData);
        
        System.out.println(jsonObject.get("groupCode")); 
    	System.out.println(jsonObject.get("groupName")); 
    	System.out.println(jsonObject.get("alum")); 
    	System.out.println(jsonObject.get("company")); 

        
    } catch (Exception e) {
        e.printStackTrace();
    }
	
	System.out.println("----- 멤버정보 "); 
	
	String jsonArrayData = "[{\"groupCode\":\"BRS\",\"member\":\"민영\"},{\"groupCode\":\"BRS\",\"member\":\"유정\"},{\"groupCode\":\"BRS\",\"member\":\"은지\"},{\"groupCode\":\"BRS\",\"member\":\"유나\"}]";
    
    try {
        JSONParser jsonParse = new JSONParser();
        
        JSONArray jsonArray = (JSONArray)jsonParse.parse(jsonArrayData);
        
        for(int i=0; i < jsonArray.size(); i++) { 
        	 
        	JSONObject jsonObject = (JSONObject) jsonArray.get(i);
        	System.out.println(jsonObject.get("groupCode") + " , " + jsonObject.get("member")); 
    	}

        
    } catch (Exception e) {
        e.printStackTrace();
    }
}

결과값이 제대로 오는 것을 볼 수 있다.

반응형

댓글