Java 9 JShell에서 Gson 라이브러리 가져오기
Java 9는 JShell이라는 대화형 REPL(Read-Eval-Print Loop) 명령줄 도구를 새롭게 도입했습니다. JShell을 사용하면 자바 코드 조각을 즉시 실행하고 그 결과를 바로 확인할 수 있습니다. 또한 클래스패스(classpath)를 통해 외부 클래스를 JShell 세션에서 불러와 사용할 수도 있습니다.
Gson 라이브러리는 자바에서 널리 사용되는 직렬화/역직렬화(serialization/deserialization) 라이브러리로, 자바 객체를 JSON으로 변환하거나 그 반대로 변환하는 작업을 손쉽게 처리해 줍니다.
1단계: JShell에서 클래스패스 설정하기
JShell에서 외부 라이브러리를 사용하려면 먼저 /env 명령어로 클래스패스를 지정해야 합니다. 아래 예제처럼 Gson jar 파일의 경로를 설정할 수 있습니다.
jshell> /env --class-path C:\Users\User\gson.jar | Setting new options and restoring state.
2단계: Gson 패키지 임포트 및 확인
Gson 라이브러리가 클래스패스에 등록되면 import 구문으로 패키지를 불러올 수 있습니다. 이후 /import 명령어를 실행하면 현재 세션에 로드된 모든 패키지 목록에서 com.google.gson.*이 포함된 것을 확인할 수 있습니다.
jshell> import com.google.gson.*
jshell> /import
| import java.io.*
| import java.math.*
| import java.net.*
| import java.nio.file.*
| import java.util.*
| import java.util.concurrent.*
| import java.util.function.*
| import java.util.prefs.*
| import java.util.regex.*
| import java.util.stream.*
| import com.google.gson.*
jshell> Gson g = new GsonBuilder().setPrettyPrinting().create()
g ==> {serializeNulls:false,factories:[Factory[typeHier ... 78b9],instanceCreators:{}}
위 예제에서는 GsonBuilder의 setPrettyPrinting() 메서드를 호출해 JSON 출력 시 들여쓰기가 적용되도록 Gson 인스턴스를 생성했습니다.
3단계: Employee 클래스 정의하기
아래 코드 스니펫에서는 테스트용 Employee 클래스를 정의합니다. 이름, 성, 직책, 근무지 정보를 필드로 가지며, 각 필드에 대한 getter 메서드와 toString() 메서드를 포함하고 있습니다.
jshell> class Employee {
...> private String firstName;
...> private String lastName;
...> private String designation;
...> private String location;
...> public Employee(String firstName, String lastName, String desigation, String location) {
...> this.firstName = firstName;
...> this.lastName = lastName;
...> this.designation = designation;
...> this.location = location;
...> }
...> public String getFirstName() {
...> return firstName;
...> }
...> public String getLastName() {
...> return lastName;
...> }
...> public String getJobDesignation() {
...> return designation;
...> }
...> public String getLocation() {
...> return location;
...> }
...> public String toString() {
...> return "Name = " + firstName + ", " + lastName + " | " +
...> "Job designation = " + designation + " | " +
...> "location = " + location + ".";
...> }
...> }
| created class Employee
4단계: 객체 생성 및 JSON 직렬화
Employee 인스턴스를 생성한 뒤, 앞서 만든 Gson 객체의 toJson() 메서드를 사용해 객체를 JSON 문자열로 직렬화할 수 있습니다.
jshell> Employee e = new Employee("Jai", "Adithya", "Content Developer", "Hyderabad");
e ==> Name = Jai, Adithya | Job designation = Content D ... er | location = Hyderabad.
jshell> String empSerialized = g.toJson(e)
empSerialized ==> "{\n \"firstName\": \"Jai\",\n \"lastName\": \" ... ation\": \"Hyderabad\"\n}"
5단계: 결과 출력 및 역직렬화
직렬화된 JSON 문자열을 출력해 보면 다음과 같습니다. 이어서 fromJson() 메서드를 사용하면 JSON 문자열을 다시 Employee 객체로 역직렬화할 수 있습니다.
jshell> System.out.println(empSerialized)
{
"firstName": "Jai",
"lastName": "Adithya",
"designation": "Content Developer",
"location": "Hyderabad"
}
jshell> Employee e1 = g.fromJson(empSerialized, Employee.class)
e1 ==> Name = Jai, Adithya | Job designation = Content D ... er | location = Hyderabad.
이처럼 JShell과 Gson 라이브러리를 함께 활용하면 별도의 프로젝트 설정 없이도 대화형 환경에서 자바 객체와 JSON 간의 변환 과정을 빠르게 실험하고 학습할 수 있습니다.