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": []}
  ]
}