Java
[Java] JSON 객체 다루기(JSONObject, JSONArray)
하부루
2024. 8. 2. 15:06
1. JSONObject
JSONObject는 주로 JSON 객체를 새로 만드는 역할을 하거나, String 객체를 JSON 객체로 변환할 때 사용
예시코드 1) JSON 객체 생성
//JSON 객체 생성
JSONObject json = new JSONObject();
//JSON Data add
json.put("강사", "김철학");
json.put("학생", "조영흥");
json.put("강의실", "C2");
//키값이 '강사'인 요소 추출하기
json.get('강사') /return '김철학'
//json 출력
System.out.println(json);
//결과
json = {"강사":"김철학","학생":"조영흥","강의실":"C2"}
예시코드 2) String → JSON 형변환
//String 객체
String str = "{\\"탄수화물\\":\\"쌀밥\\", \\"단백질\\":\\"소고기"}";
//str을 JSON객체로 변환
JsonObject json2 = new JsonObject(str);
//json2 출력
System.out.println(json2);
//결과
json2 = {"탄수화물":"쌀밥","단백질":"소고기"}
2. JSONArray
JSONArray는 JSON들이 들어있는 배열(Array)
JSONObject, JSONArray, 문자열, 숫자, boolean, null 등의 타입을 넣을 수 있음
예시코드 1) 데이터 타입
//JSON 배열 생성
JSONArray jsonArray = new JSONArray();
//문자열 추가
jsonArray.add("apple");
//숫자 추가
jsonArray.add(123);
//불리언 추가
jsonArray.add(true);
//null 값 추가
jsonArray.add(null);
//JSON 객체 추가
JSONObject jsonObject = new JSONObject();
jsonObject.put("name", "Kim");
jsonObject.put("age", 30);
jsonArray.add(jsonObject);
//또 다른 JSON 배열 추가
JSONArray innerArray = new JSONArray();
innerArray.add("Item1");
innerArray.add("Item2");
jsonArray.add(innerArray);
//jsonArray 출력
System.out.println(jsonArray);
jsonArray = [
"apple",
123,
true,
null,
{"name":"John","age":30},
["innerItem1","innerItem2"]
]
예시코드 2) JSONArray 사용 예제 1
//첫 번째 학생 정보 JSON 객체 생성
JSONObject student1 = new JSONObject();
student1.put("name", "Kim");
student1.put("age", 21);
//첫 번째 학생의 수업 목록 JSON 배열 생성
JSONArray courses1 = new JSONArray();
courses1.add("Math");
courses1.add("Science");
courses1.add("History");
//첫 번째 학생 객체에 수업 목록 추가
student1.put("courses", courses1);
//두 번째 학생 정보 JSON 객체 생성
JSONObject student2 = new JSONObject();
student2.put("name", "Lee");
student2.put("age", 22);
//두 번째 학생의 수업 목록 JSON 배열 생성
JSONArray courses2 = new JSONArray();
courses2.add("English");
courses2.add("Art");
courses2.add("Football");
//두 번째 학생 객체에 수업 목록 추가
student2.put("courses", courses2);
//학생들을 담을 JSON 배열 생성
JSONArray students = new JSONArray();
students.add(student1);
students.add(student2);
//students 출력
System.out.println(students);
//결과
students : [
{
"name": "Kim",
"age": 21,
"courses": ["Math", "Science", "History"]
},
{
"name": "Lee",
"age": 22,
"courses": ["English", "Art", "Football"]
}
]
예시코드 3) JSONArray 사용 예제 2
//List<Map<String, Object>> 생성
List<Map<String, Object>> students = new ArrayList<>();
//첫 번째 학생 정보 Map 생성
Map<String, Object> student1 = new HashMap<>();
student1.put("name", "Kim");
student1.put("age", 21);
//첫 번째 학생의 수업 목록 JSONArray 생성
JSONArray courses1 = new JSONArray();
courses1.add("Math");
courses1.add("Science");
courses1.add("History");
//첫 번째 학생 객체에 수업 목록 추가
student1.put("courses", courses1);
//두 번째 학생 정보 Map 생성
Map<String, Object> student2 = new HashMap<>();
student2.put("name", "Lee");
student2.put("age", 22);
//두 번째 학생의 수업 목록 JSONArray 생성
JSONArray courses2 = new JSONArray();
courses2.add("English");
courses2.add("Art");
courses2.add("Football");
//두 번째 학생 객체에 수업 목록 추가
student2.put("courses", courses2);
//List에 학생 정보 추가
students.add(student1);
students.add(student2);
//학생 정보를 담을 JSONArray 생성
JSONArray jsonArray = new JSONArray();
for (Map<String, Object> student : students) {
//Map을 JSONObject로 변환하여 JSONArray에 추가
jsonArray.add(new JSONObject(student));
}
//jsonArray 출력
System.out.println(jsonArray);
//결과
students : [
{
"name": "Kim",
"age": 21,
"courses": ["Math", "Science", "History"]
},
{
"name": "Lee",
"age": 22,
"courses": ["English", "Art", "Football"]
}
]
예시코드 4) JSONArray 사용 예제 3
//JSON 객체 생성
JSONObject jsonObject = new JSONObject();
//chartSeries 배열 생성
JSONArray chartSeries = new JSONArray();
//첫 번째 JSON 객체 추가
JSONObject series1 = new JSONObject();
series1.put("name", "Series1");
series1.put("data", new JSONArray());
chartSeries.add(series1);
//두 번째 JSON 객체 추가
JSONObject series2 = new JSONObject();
series2.put("name", "Series2");
series2.put("data", new JSONArray());
chartSeries.add(series2);
//세 번째 JSON 객체 추가
JSONObject series3 = new JSONObject();
series3.put("name", "Series3");
series3.put("data", new JSONArray());
chartSeries.add(series3);
//chartSeries 배열을 JSON 객체에 추가
jsonObject.put("chartSeries", chartSeries);
//jsonObject 출력
System.out.println(jsonObject;
//결과
{
"chartSeries": [
{"name": "Series1", "data": []},
{"name": "Series2", "data": []},
{"name": "Series3", "data": []}
]
}