[Java] JSON 파일 생성, 저장 방법
June 30, 2024
Java에서 org.json
라이브러리를 사용하여 JSON 형식의 파일을 생성, 저장하는 방법에 대해서 알아보겠습니다.
1. org.json 라이브러리
이 글에서는 org.json
라이브러리를 사용하여 JSON 데이터 생성 및 파일을 저장합니다.
예제를 소개하기 전에, Maven 또는 Gradle 프로젝트에서 org.json
라이브러리를 사용하려면 아래 내용을 참조하여 설정하시면 됩니다.
라이브러리 설정 (Maven 프로젝트)
<dependencies>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20210307</version> <!-- 사용 가능한 최신 버전을 사용 -->
</dependency>
</dependencies>
라이브러리 설정 (Gradle 프로젝트)
dependencies {
implementation 'org.json:json:20210307' // 사용 가능한 최신 버전을 사용
}
2. key-value 구조의 JSON 생성 및 파일 저장
가장 간단한 key-value
값들을 갖고 있는 JSON 파일을 생성하는 예제입니다.
JSONObject
에put()
함수로 key-value 값들을 추가JSONObject.toString()
으로 데이터를 JSON 형식의 문자열로 변환- FileWriter를 통해 JSON 문자열을 파일로 저장
import org.json.JSONObject;
import java.io.FileWriter;
import java.io.IOException;
public class Example {
public static void main(String[] args) {
// JSON 파일에 저장할 데이터 생성
JSONObject jsonObject = new JSONObject();
jsonObject.put("firstName", "John");
jsonObject.put("lastName", "Doe");
jsonObject.put("age", 30);
try (FileWriter fileWriter = new FileWriter("person.json")) {
// JSON 파일에 데이터 저장
fileWriter.write(jsonObject.toString());
System.out.println("JSON 파일이 생성되었습니다.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
위 코드로 생성된 person.json 파일을 열어보면 아래와 같이 저장됩니다.
{"firstName":"John","lastName":"Doe","age":30}
3. 배열을 갖고 있는 JSON 생성 및 파일 저장
JSON은 배열 데이터도 갖고 있습니다. 배열을 갖고 있는 JSON 파일을 저장하는 예제입니다.
- JSONArray는 배열 데이터를 갖고 있음
JSONArray.put()
으로 배열에 데이터를 추가, 데이터는 JSONObject가 될 수 있음JSONArray.toString()
으로 데이터를 JSON 형식의 문자열로 변환- FileWriter를 통해 JSON 문자열을 파일로 저장
import org.json.JSONArray;
import org.json.JSONObject;
import java.io.FileWriter;
import java.io.IOException;
public class Example {
public static void main(String[] args) {
// JSON 배열 생성
JSONArray jsonArray = new JSONArray();
// JSON 객체 1
JSONObject jsonObject1 = new JSONObject();
jsonObject1.put("name", "John");
jsonObject1.put("age", 30);
jsonArray.put(jsonObject1);
// JSON 객체 2
JSONObject jsonObject2 = new JSONObject();
jsonObject2.put("name", "Alice");
jsonObject2.put("age", 25);
jsonArray.put(jsonObject2);
try (FileWriter fileWriter = new FileWriter("people.json")) {
// JSON 파일에 배열 저장
fileWriter.write(jsonArray.toString());
System.out.println("JSON 파일이 생성되었습니다.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
위 코드로 생성된 people.json 파일을 열어보면 아래와 같이 저장됩니다.
- JSON에서
[...]
은 배열 데이터를 의미
[{"name":"John","age":30},{"name":"Alice","age":25}]
4. 좀 더 복잡한 JSON 생성 및 파일 저장
key-value 데이터와 배열 데이터가 섞여있는 JSON 파일을 저장하는 예제입니다.
- JSONObject가 가장 상위 노드 객체
- JSONObject 하위에 key-value 값을 추가하였고, value가 배열 데이터인 JSON 구조
JSONObject.toString()
는 JSON 데이터를 문자열로 변환JSONObject.toString(4)
는 JSON에 들여쓰기 4를 적용하여 문자열 변환
import org.json.JSONArray;
import org.json.JSONObject;
import java.io.FileWriter;
import java.io.IOException;
public class Example {
public static void main(String[] args) {
// 최상위 JSON 객체 생성
JSONObject topLevelObject = new JSONObject();
// JSON 배열 생성
JSONArray jsonArray = new JSONArray();
// JSON 객체 1
JSONObject jsonObject1 = new JSONObject();
jsonObject1.put("name", "John");
jsonObject1.put("age", 30);
// JSON 배열에 객체 추가
jsonArray.put(jsonObject1);
// JSON 객체 2
JSONObject jsonObject2 = new JSONObject();
jsonObject2.put("name", "Alice");
jsonObject2.put("age", 25);
// JSON 배열에 객체 추가
jsonArray.put(jsonObject2);
// 최상위 JSON 객체에 배열 추가
topLevelObject.put("people", jsonArray);
// JSON 파일에 최상위 객체 저장
try (FileWriter fileWriter = new FileWriter("example.json")) {
fileWriter.write(topLevelObject.toString(4));
System.out.println("JSON 파일이 생성되었습니다.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
위 코드로 생성된 example.json 파일을 열어보면 아래와 같이 저장됩니다.
JSONObject.toString(4)
로, 들여쓰기 4를 적용하여 JSON 파일의 가독성이 좋아졌습니다.
{"people": [
{
"name": "John",
"age": 30
},
{
"name": "Alice",
"age": 25
}
]}