자바 JSON(1) 생성
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) 추가
Leave a comment