4 minute read

JAVA 프로그래밍으로 JSON 생성하기

목적
💡 테스트용 이다.
💡 실무에서는 REST API 를 통해 찌르면 리턴받는데 집에는 그런 환경이 없으니까!
💡 JAVA 언어로 JSON 객체를 생성하고 문자열로 리턴하도록 만들었다.

내용
💡 creatJsonObj 라는 함수로 케이스별로 구현했다.

String 문자열 하드코딩

CASE1. JSON 포맷 인식하도록 할당

/*********************
 * 단순 String 문자열로 생성한다.<br>
 * 이스케이프 처리하여 JSON 형태 데이터를 생성한다.<br>
 *  
 * ex)
 * 직관적이므로 코드에서 확인
 *  
 * @return String 제이슨 형태 문자열
 *********************/
public static String creatJsonStr1() {
	String temp = "{\n" +
	"    \"clusterMetrics\": {\n" +
	"        \"activeNodes\": 2,\n" +
	"        \"allocatedMB\": 0,\n" +
	"        \"allocatedVirtualCores\": 0,\n" +
	"        \"appsCompleted\": 25585,\n" +
	"        \"appsFailed\": 1595,\n" +
	"        \"appsKilled\": 734,\n" +
	"        \"appsPending\": 0,\n" +
	"        \"appsRunning\": 0,\n" +
	"        \"appsSubmitted\": 27914,\n" +
	"        \"availableMB\": 23040,\n" +
	"        \"availableVirtualCores\": 23,\n" +
	"        \"containersAllocated\": 0,\n" +
	"        \"containersPending\": 0,\n" +
	"        \"containersReserved\": 0,\n" +
	"        \"decommissionedNodes\": 0,\n" +
	"        \"decommissioningNodes\": 0,\n" +
	"        \"lostNodes\": 0,\n" +
	"        \"rebootedNodes\": 0,\n" +
	"        \"reservedMB\": 0,\n" +
	"        \"reservedVirtualCores\": 0,\n" +
	"        \"totalMB\": 23040,\n" +
	"        \"totalNodes\": 2,\n" +
	"        \"totalVirtualCores\": 23,\n" +
	"        \"unhealthyNodes\": 0\n" +
	"    }\n" +
	"}";

}

org.json 패키지

CASE1. creatJsonObj1() 메소드

/*********************
 * JSON 객체를 생성하고 String 문자열로 변환하여 반환한다.<br>
 * org.json 라이브러리를 사용하여 JSON 데이터를 생성한다.<br>
 *  
 * ex)
 * {
 *   "status":200,
 *   "msg":"성공",
 *   "result": [
 *     "data1",
 *     "data2",
 *   ],
 *   "address": [
 *     {
 *       "data1" :"데이터1의 값 홍길동",
 *       "data2" :"데이터2의 값 홍길동주소"
 *     }, 
 *     {
 *       "data1" :"데이터1의 값 박명수",
 *       "data2" :"데이터2의 값 박명수주소"
 *     }, 
 *   ]
 * }
 * 
 * @return String 제이슨 형태 문자열
 *********************/
public static String creatJsonObj1() {
	String strJsonObject = "";
	JSONObject jsonObject = new JSONObject();
	JSONArray resultArray = new JSONArray();   //일반 배열
	JSONArray addressArray = new JSONArray();  //객체 배열
	
	resultArray.put("data1");
	resultArray.put("data2");
	
	addressArray.put(new JSONObject() );
	addressArray.put(new JSONObject() );
      
	jsonObject.put("status", 200);
	jsonObject.put("msg", "성공");
	jsonObject.put("result", resultArray);
	jsonObject.put("address", addressArray);
	
	strJsonObject = (String) jsonObject.toString();
	return strJsonObject;

}

첫번째
💡 기본형, 배열형, 객체가 들어있는 배열혈

CASE2. creatJsonObj2() 메소드

/*********************
 * JSON 객체를 생성하고 String 문자열로 변환하여 반환한다.<br>
 * org.json 라이브러리를 사용하여 JSON 데이터를 생성한다.<br>
 *  
 * ex)
 * {
 *   "msg": "성공",
 *   "status": 200, 
 *   "result": [
 *       "data1",
 *       "data2"
 *   ],
 *   "address": [
 *       {
 *           "data2": "데이터2의 값 홍길동주소",
 *           "data1": "데이터1의 값 홍길동"
 *       },
 *       {
 *           "data2": "데이터2의 값 박명수주소",
 *           "data1": "데이터1의 값 박명수"
 *       }
 *   ],
 *   "language": [
 *       {
 *           "언어": "일본어",
 *           "언어2": "카타카나",
 *           "언어1": "히라가나"
 *       },
 *       {
 *           "언어": "중국어",
 *           "언어2": "번체",
 *           "언어1": "간체"
 *       }
 *   ]
 * }
 * 
 * @return String 제이슨 형태 문자열
 *********************/
public static String creatJsonObj2() {
	String strJsonObject = "";
	JSONObject jsonObject = new JSONObject();
	JSONArray resultArray = new JSONArray();   //일반 배열
	JSONArray addressArray = new JSONArray();  //객체 배열
	JSONArray languageArray = new JSONArray();  //객체 배열
	
	resultArray.put("data1");
	resultArray.put("data2");
	
	addressArray.put(new JSONObject() );
	addressArray.put(new JSONObject() );
	languageArray.put(new JSONObject() );
	languageArray.put(new JSONObject() );
      
      
	jsonObject.put("status", 200);
	jsonObject.put("msg", "성공");
	jsonObject.put("result", resultArray);
	jsonObject.put("address", addressArray);
	jsonObject.put("language", languageArray);
	
	strJsonObject = (String) jsonObject.toString();
	return strJsonObject;

}

두번째
💡 기본형, 배열형, 객체가 들어있는 배열혈
💡 객체가 들어있는 배열혈 1개 더 추가

CASE3. creatJsonObj3() 메소드

/*********************
* JSON 객체를 생성하고 String 문자열로 변환하여 반환한다.<br>
* org.json 라이브러리를 사용하여 JSON 데이터를 생성한다.<br>
*  
* ex)
* {
*     "documnet": [
*         {
*             "status": 200, 
*             "msg": "성공",
*             "result": [
*                 "data1",
*                 "data2"
*             ],
*             "address": [
*                 {
*                     "data2": "데이터2의 값 홍길동주소",
*                     "data1": "데이터1의 값 홍길동"
*                 },
*                 {
*                     "data2": "데이터2의 값 박명수주소",
*                     "data1": "데이터1의 값 박명수"
*                 }
*             ],
*             "language": [
*                 {
*                     "언어": "일본어",
*                     "언어2": "카타카나",
*                     "언어1": "히라가나"
*                 },
*                 {
*                     "언어": "중국어",
*                     "언어2": "번체",
*                     "언어1": "간체"
*                 }
*             ]
*         }
*     ]
* }
* 
* @return String 제이슨 형태 문자열
*********************/
public static String creatJsonObj3() {
	String strJsonObject = "";
	
	JSONObject jsonObject = new JSONObject();
	JSONArray resultArray = new JSONArray();   //일반 배열
	JSONArray addressArray = new JSONArray();  //객체 배열
	JSONArray languageArray = new JSONArray(); //객체 배열
	
	resultArray.put("data1");
	resultArray.put("data2");
	
	addressArray.put(new JSONObject() );
	addressArray.put(new JSONObject() );
	languageArray.put(new JSONObject() );
	languageArray.put(new JSONObject() );
      
      
	jsonObject.put("status", 200);
	jsonObject.put("msg", "성공");
	jsonObject.put("result", resultArray);
	jsonObject.put("address", addressArray);
	jsonObject.put("language", languageArray);
	
	// CREATE
	JSONObject documentObject = new JSONObject();
	JSONArray documentArray = new JSONArray(); //객체 배열
	documentArray.put(jsonObject);
	documentObject.put("documnet", documentArray);
	
	strJsonObject = (String) documentObject.toString();
	System.out.println(strJsonObject);
	return strJsonObject;

}

세번째
💡 기본형, 배열형, 객체가 들어있는 배열혈
💡 전체를 document 배열로 감싸버림

CASE4. creatJsonObj4() 메소드

/*********************
 * JSON 객체를 생성하고 String 문자열로 변환하여 반환한다.<br>
 * org.json 라이브러리를 사용하여 JSON 데이터를 생성한다.<br>
 *  
 * ex)
 * {
 *     "documnet": [
 *         {
 *             "status": 200, 
 *             "msg": "성공",
 *             "result": [
 *                 "data1",
 *                 "data2"
 *             ],
 *             "address": [
 *                 {
 *                     "data2": "데이터2의 값 홍길동주소",
 *                     "data1": "데이터1의 값 홍길동"
 *                 },
 *                 {
 *                     "data2": "데이터2의 값 박명수주소",
 *                     "data1": "데이터1의 값 박명수"
 *                 }
 *             ],
 *             "language": [
 *                 {
 *                     "언어": "일본어",
 *                     "언어2": "카타카나",
 *                     "언어1": "히라가나"
 *                 },
 *                 {
 *                     "언어": "중국어",
 *                     "언어2": "번체",
 *                     "언어1": "간체"
 *                 }
 *             ]
 *         }
 *     ],
 *     "etc": {
 *     		"name": "기타
 *     }
 * }
 * 
 * @return String 제이슨 형태 문자열
*********************/
public static String creatJsonObj4() {

	String strJsonObject = "";
    JSONObject jsonObject = new JSONObject();
    
    JSONArray documentArray = new JSONArray();
    JSONObject documentObject = new JSONObject();
    documentObject.put("status", 200);
    documentObject.put("msg", "성공");
    
    JSONArray resultArray = new JSONArray();
    resultArray.put("data1");
    resultArray.put("data2");
    documentObject.put("result", resultArray);
    
    JSONArray addressArray = new JSONArray();
    JSONObject address1 = new JSONObject();
    address1.put("data2", "데이터2의 값 홍길동주소");
    address1.put("data1", "데이터1의 값 홍길동");
    addressArray.put(address1);
    
    JSONObject address2 = new JSONObject();
    address2.put("data2", "데이터2의 값 박명수주소");
    address2.put("data1", "데이터1의 값 박명수");
    addressArray.put(address2);
    
    documentObject.put("address", addressArray);
    
    JSONArray languageArray = new JSONArray();
    JSONObject language1 = new JSONObject();
    language1.put("언어", "일본어");
    language1.put("언어2", "카타카나");
    language1.put("언어1", "히라가나");
    languageArray.put(language1);
    
    JSONObject language2 = new JSONObject();
    language2.put("언어", "중국어");
    language2.put("언어2", "번체");
    language2.put("언어1", "간체");
    languageArray.put(language2);
    
    documentObject.put("language", languageArray);
    
    documentArray.put(documentObject);
    jsonObject.put("documnet", documentArray);
    
    JSONObject etcObject = new JSONObject();
    etcObject.put("name", "기타");
    jsonObject.put("etc", etcObject);
    
    strJsonObject = jsonObject.toString();
    System.out.println(strJsonObject);
    
	return strJsonObject;
}

네번째
💡 document 배열의 형제레벨 엘리먼트(etc) 추가

Tags:

Categories:

Updated:

Leave a comment