JSON
[JSON] Gson 라이브러리를 사용하며 Java에서 JSON 사용하는 방법
데브마우스
2024. 1. 30. 09:07
Gson은 무엇인가요?
Gson은 구글에서 개발한 오픈소스 소프트웨어입니다. Gson을 사용하여 직렬화/비직렬화 라이브러리로 자바 객체를 JSON으로 변환합니다. 또한 반대로 JSON을 자바 객체로 변환할 수 있습니다. (출처: https://github.com/google/gson)
Gson을 어디서 다운로드 받나요?
Gson은 메이븐 레포지토리(https://mvnrepository.com/artifact/com.google.code.gson/gson)에서 다운로드 받을 수 있습니다. Gson을 사용하려면 2가지 방법이 있습니다. 의존성 라이브러리를 pom.xml에 추가하거나 jar파일을 다운로드하여 수동으로 추가할 수 있습니다.

jar 파일 추가 방법
jar 파일 추가 환경은 아래와 같습니다.
- Eclipse: 2023-09

프로젝트에서 마우스 오른쪽을 클릭한 후 [Build Path]를 클릭합니다.

[Classpath]를 클릭한 후 오른쪽의 [Add External JARs...]을 클릭합니다.

gson 라이브러리가 추가되었습니다. [Apply and Close]를 클릭합니다.
Gson 사용 방법 정리
Gson을 사용하기 위해서는 DTO 클래스와 임포트(import)가 필요합니다.
// Gson 클래스를 사용하기 위해 필요합니다.
import com.google.gson.Gson;
// TypeToken 클래스를 사용하기 위해 필요합니다.
import com.google.gson.reflect.TypeToken;
DTO Member 클래스입니다.
public class Member {
private String name;
private int age;
private String email;
public Member() {
super();
}
public Member(String name, int age, String email) {
super();
this.name = name;
this.age = age;
this.email = email;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "Member [name=" + name + ", age=" + age + ", email=" + email + "]";
}
}
Gson을 활용한 자바 코드입니다.
import java.util.ArrayList;
import java.util.List;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
public class GsonPrac {
public static void main(String[] args) {
// 1. Object(Member DTO) -> JSON(String)
Member m = new Member("Hong", 10, "Hong@email.com");
Gson gson = new Gson(); // import com.google.com.gson.Gson;이 없으면 작동하지 않습니다.
String json = gson.toJson(m);
System.out.println(json);
// 2. JSON(String) -> Object(Member DTO) : JSON을 객체로 변환
Member m1 = gson.fromJson(json, Member.class);
System.out.println("JSON(String) -> Object(Member DTO) : " + m1);
System.out.println(m1.getName() + "\t" + m1.getAge());
// 3. Object(List<Member>) -> JSON(String) : [{}, {}...] 배열을 JSON으로 변환
List<Member> list = new ArrayList<Member>();
list.add(new Member("Hong", 10, "Hong@email.com"));
list.add(new Member("Kim", 20, "Kim@email.com"));
list.add(new Member("Lee", 30, "Lee@email.com"));
String listJson = gson.toJson(list);
System.out.println(listJson);
// 4.JSOSN(String) -> Object(List<Member>) : JSON을 객체로 변환
List<Member> list1 = gson.fromJson(listJson, new TypeToken<List<Member>>(){}.getType());
for(Member mb : list1) {
System.out.print(mb);
}
}
}
| 출발 데이터 형태 | 도착 데이터 형태 | 설명 |
| Object(DTO) | JSON(String) | 객체를 JSON으로 변환합니다. |
| JSON(String) | Object(DTO) | JSON을 객체로 변환합니다. |
| Object(List<DTO>) | JSON(String) | 리스트 객체를 JSON 형태[{ }, { } .... ]로 변환합니다. |
| List<JSON(String)> | Object(DTO) | 클래스_이름 [ key=value, key=value ... ]형태로 변환합니다. |