Notice
Recent Posts
Recent Comments
Link
관리 메뉴

데브마우스

[JSON] Gson 라이브러리를 사용하며 Java에서 JSON 사용하는 방법 본문

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 ... ]형태로 변환합니다.