Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

GSON 라이브러리를 사용하여 Java 객체를 JSON으로 변환하는 방법은 무엇입니까?

<시간/>

JSON 또는 JavaScript Object Notation은 사람이 읽을 수 있는 데이터 교환을 위해 설계된 가벼운 텍스트 기반 개방형 표준입니다. C, C++, Java, Python, Perl 등을 포함하여 JSON에서 사용하는 규칙은 프로그래머에게 알려져 있습니다.

JSON 개체를 처리하는 데 사용할 수 있는 여러 Java 라이브러리가 있습니다. Google Gson은 Java 객체를 JSON으로 또는 그 반대로 직렬화하는 간단한 Java 기반 라이브러리입니다. Google에서 개발한 오픈 소스 라이브러리입니다.

Java 객체를 JSON으로 변환

Google의 Gson 라이브러리는 라이브러리의 메인 클래스인 동일한 이름(Gson)의 클래스를 제공합니다.

이 클래스는 toJson()이라는 메서드를 제공합니다. 이 방법에는 여러 가지 변형이 있으며 그 중 하나는 Java 개체를 수락하고 이를 JSON 개체로 변환하여 반환합니다.

따라서 GSON 라이브러리를 사용하여 Java 객체를 JSON 문자열로 변환하려면 -

  • pom.xml에 다음 maven 종속성을 추가하십시오.

<dependency>
   <groupId>com.google.code.gson</groupId>
   <artifactId>gson</artifactId>
   <version>2.8.5</version>
</dependency>
  • private 변수와 setter/getter 메소드를 사용하여 javabean/POJO 객체를 생성합니다.

  • 다른 클래스를 생성하십시오(POJO 클래스가 이 클래스에 사용 가능한지 확인하십시오).

  • 그 안에 POJO 클래스의 개체를 만들고 setter 메서드를 사용하여 필요한 값을 설정합니다.

  • Gson 클래스를 인스턴스화합니다.

  • 위에서 생성한 POJO 객체를 전달하여 toJson() 메소드를 호출합니다.

  • 획득한 JSON을 검색하고 인쇄합니다.

예시

import com.google.gson.Gson;
class Student {
   private int id;
   private String name;
   private int age;
   private long phone;
   public int getId() {
      return id;
   }
   public void setId(int id) {
      this.id = id;
   }
   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 long getPhone() {
      return phone;
   }
   public void setPhone(long phone) {
      this.phone = phone;
   }
}
public class ObjectTOString {
   public static void main(String args[]) {
      Student std = new Student();
      std.setId(001);
      std.setName("Krishna");
      std.setAge(30);
      std.setPhone(9848022338L);
      //Creating the Gson object
      Gson gSon = new Gson();
      String jsonString = gSon.toJson(std);
      System.out.println(jsonString);
   }
}

출력

{"id":1,"name":"Krishna","age":30,"phone":9848022338}