일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- IntelliJ
- Maven
- 자바스크립트
- Eclipse
- input
- table
- date
- list
- vscode
- js
- 이탈리아
- 이클립스
- javascript
- CMD
- json
- Button
- 인텔리제이
- Java
- 정규식
- string
- 배열
- CSS
- 문자열
- 테이블
- html
- Visual Studio Code
- windows
- Array
- ArrayList
- 자바
- Today
- Total
어제 오늘 내일
[Java] GSON을 이용한 Json 파일 읽기 / 저장하기 본문
GSON 라이브러리를 이용하여
Json 파일을 읽어서 객체(VO)에 저장하는 방법,
객체(VO)를 Json 파일에 저장하는 방법을 소개합니다.
- 객체(VO) 형태로 Json 파일 읽기 / 쓰기
- Json 파일 읽기
- Json 파일 쓰기
- JsonObject 형태로 Json 파일 읽기 / 쓰기
- Json 파일 읽기
- Json 파일 쓰기
1. 객체(VO) 형태로 Json 파일 읽기 / 쓰기
다음의 Json 파일을,
아래의 Lecture 클래스(VO) 형태로 읽고 쓰는 예제입니다.
lecture.json
{ "id": 1, "students": [ { "id": 123, "name": "Tom" }, { "id": 124, "name": "Jerry" } ], "subject": { "name": "Java", "professor": "Anna" } }
Lecture.java (VO)
import java.util.List; import java.util.Map; public class Lecture { private int id; private List<Map<String, Object>> students; private Map<String, Object> subject; public int getId() { return id; } public void setId(int id) { this.id = id; } public List<Map<String, Object>> getStudents() { return students; } public void setStudents(List<Map<String, Object>> students) { this.students = students; } public Map<String, Object> getSubject() { return subject; } public void setSubject(Map<String, Object> subject) { this.subject = subject; } @Override public String toString() { return "Lecture [id=" + id + ", students=" + students + ", subject=" + subject + "]"; } }
1.1 Json 파일 읽기
코드
import java.io.FileNotFoundException; import java.io.FileReader; import java.io.Reader; import com.google.gson.Gson; public class ReadJsonFileToObject { public static void main(String[] args) throws FileNotFoundException { // FileReader 생성 Reader reader = new FileReader("c:\\code\\lecture.json"); // Json 파일 읽어서, Lecture 객체로 변환 Gson gson = new Gson(); Lecture lecture = gson.fromJson(reader, Lecture.class); // Lecture 객체 출력 // Lecture [id=1, students=[{id=123.0, name=Tom}, {id=124.0, name=Jerry}], subject={name=Java, professor=Anna}] System.out.println(lecture); } }
Lecture lecture = gson.fromJson(reader, Lecture.class);
Gson의 fromJson에 Reader 객체를 전달하여 Json 파일을 읽고,
Lecture 객체로 변환하여 리턴하였습니다.
1.2 Json 파일 쓰기
코드
import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import com.google.gson.Gson; import com.google.gson.GsonBuilder; public class SaveObjectToJsonFile { public static void main(String[] args) throws IOException { Gson gson = new GsonBuilder().setPrettyPrinting().create(); // Lecture Object 생성 Lecture lecture = new Lecture(); // lecture Object 값 세팅 // setId lecture.setId(1); // setStudents List<Map<String, Object>> students = new ArrayList<>(); students.add(getStudentMap(123, "Tom")); students.add(getStudentMap(124, "Jerry")); lecture.setStudents(students); // setSubject Map<String, Object> subject = getSubjectMap("Java", "Anna"); lecture.setSubject(subject); // lecture 객체를 파일에 쓰기 FileWriter fw = new FileWriter("c:\\code\\lecture.json"); gson.toJson(lecture, fw); fw.flush(); fw.close(); } public static Map<String, Object> getStudentMap(long id, String name) { Map<String, Object> student = new HashMap<>(); student.put("id", id); student.put("name", name); return student; } public static Map<String, Object> getSubjectMap(String name, String professor) { Map<String, Object> subject = new HashMap<>(); subject.put("name", name); subject.put("professor", professor); return subject; } }
gson.toJson(lecture, fw);
gosn.toJson() 메소드의 2번째 파라미터로 Writer를 전달하여,
주어진 Lecture 객체를 Json 문자열로 변환한 후, 파일에 저장하였습니다.
2. JsonObject 형태로 Json 파일 읽기 / 쓰기
2.1 Json 파일 읽기
코드
import java.io.FileNotFoundException; import java.io.FileReader; import java.io.Reader; import com.google.gson.Gson; import com.google.gson.JsonObject; public class ReadJsonFileToJsonObject { public static void main(String[] args) throws FileNotFoundException { // FileReader 생성 Reader reader = new FileReader("c:\\code\\lecture.json"); // Json 파일 읽어서, Lecture 객체로 변환 Gson gson = new Gson(); JsonObject obj = gson.fromJson(reader, JsonObject.class); // JsonObject 객체 출력 // {"id":1,"students":[{"id":123,"name":"Tom"},{"id":124,"name":"Jerry"}],"subject":{"name":"Java","professor":"Anna"}} System.out.println(obj); } }
JsonObject obj = gson.fromJson(reader, JsonObject.class);
파일에서 읽은 Json 정보를 JsonObject에 저장하기 위해서
fromJson() 메소드의 2번째 파라미터로 'JsonObject.class'를 전달하였습니다.
2.2 Json 파일 쓰기
코드
import java.io.FileWriter; import java.io.IOException; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonArray; import com.google.gson.JsonObject; public class SaveJsonFile { public static void main(String[] args) throws IOException { Gson gson = new GsonBuilder().setPrettyPrinting().create(); // Json key, value 추가 JsonObject jsonObject = new JsonObject(); jsonObject.addProperty("id", 1); // students JsonObject student1 = getStudentJsonObject(123, "Tom"); JsonObject student2 = getStudentJsonObject(124, "Jerry"); JsonArray students = new JsonArray(); students.add(student1); students.add(student2); jsonObject.add("students", students); // subject JsonObject subject = getSubjectJsonObject("Java", "Anna"); jsonObject.add("subject", subject); // JsonObject를 파일에 쓰기 FileWriter fw = new FileWriter("c:\\code\\lecture.json"); gson.toJson(jsonObject, fw); fw.flush(); fw.close(); } public static JsonObject getStudentJsonObject(long id, String name) { JsonObject studentJsonObject = new JsonObject(); studentJsonObject.addProperty("id", id); studentJsonObject.addProperty("name", name); return studentJsonObject; } public static JsonObject getSubjectJsonObject(String name, String professor) { JsonObject subjectJsonObject = new JsonObject(); subjectJsonObject.addProperty("name", name); subjectJsonObject.addProperty("professor", professor); return subjectJsonObject; } }
gson.toJson(jsonObject, fw);
toJson() 메소드에 Json 파일에 작성할 JsonObject 객체와
Writer 객체를 전달하였습니다.
GSON 라이브러리를 사용하여
Json 파일을 읽고, 쓰는 방법을 알아보았습니다.
'IT > Java' 카테고리의 다른 글
[Java] Jackson 라이브러리를 이용하여 Object를 JSON으로 변환하기 (0) | 2021.09.05 |
---|---|
[Java] Jackson 라이브러리를 이용하여 JSON을 Object로 변환하기 (0) | 2021.09.05 |
[Java] Gson 라이브러리 사용법 및 예제 ( Json 생성, 변환 ) (4) | 2021.07.18 |
[Java] 여러개의 Set 객체 합치기 (0) | 2021.07.17 |
[Java / json-simple] JSON에 데이터 추가, 변경, 삭제하기 (0) | 2021.07.17 |