ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] Gson 사용하기
    카테고리 없음 2023. 7. 16. 23:29

    출처 : https://beomseok95.tistory.com/124

     

    Gson 라이브러리 사용하기

    Gson은 java Object를 JSON 표현으로 변환하는데 사용할 수 있는 java 라이브러리입니다.

    JSON 문자열을 java객체로 변환하는데도 사용할 수 있습니다.

     

    주요기능

    • 기본형 변환 지원
    • 클래스 변환 지원
    • 제네릭 지원, List , Map 등 콜렉션을 변환 할 때 유용
    • 멀티스레드 지원, Gson 내부 상태를 갖지않아 Thrad-safe이다
    • 빠르고 가볍다. Serialize보다 좋음
     
    생성하기
    //Java
    Gson gson=new Gson()
    //Kotlin
    var gson=Gson()

     

     

     

    형변환 (Java->Json)

    gson.toJson(short, int, long, float, double, String, Object)

     

    형변환 (Json->java)

    gson.fromJson(json문자, javaClaass)

     
       

    # Maven 의존성 추가

    <dependency>

      <groupId>com.google.code.gson</groupId>

      <artifactId>gson</artifactId>

      <version>2.8.4</version>

    </dependency>

     

     

    ex)자바 기본 자료형 변환하기

    // (Serialization)
    Gson gson = new Gson();
    gson.toJson(1);            // ==> prints 1
    gson.toJson("abcd");       // ==> prints "abcd"
    gson.toJson(new Long(10)); // ==> prints 10
    int[] values = { 1 };
    gson.toJson(values);       // ==> prints [1] 
     
    // (Deserialization)
    int one = gson.fromJson("1", int.class);
    Integer one = gson.fromJson("1", Integer.class);
    Long one = gson.fromJson("1", Long.class);
    Boolean false = gson.fromJson("false", Boolean.class);
    String str = gson.fromJson("\"abc\"", String.class);
    String anotherStr = gson.fromJson("[\"abc\"]", String.class);

     

     

    ex) 자바의 객체 변환 하기

    class BagOfPrimitives {
      private int value1 = 1;
      private String value2 = "abc";
      private transient int value3 = 3;
      BagOfPrimitives() {
        // no-args constructor
      }
    }

     

    json 표현식으로 변환해보면

    // (Serialization)
    BagOfPrimitives obj = new BagOfPrimitives();
    Gson gson = new Gson();
    String json = gson.toJson(obj); 

    // ==> json is {"value1":1,"value2":"abc"}

     

     

    ex) 배열예시 ,배열은 []로 표현되어 나오며,어렵지않게 상호변환가능

    Gson gson = new Gson();
    int[] ints = {1, 2, 3, 4, 5};
    String[] strings = {"abc", "def", "ghi"};
     
    // (Serialization)
    gson.toJson(ints);     // ==> prints [1,2,3,4,5]
    gson.toJson(strings);  // ==> prints ["abc", "def", "ghi"]
     
    // (Deserialization)
    int[] ints2 = gson.fromJson("[1,2,3,4,5]", int[].class);

    // ==> ints2 will be same as ints

     

    ex)컬렉션 예시, 배열과 같이 []로 표현되나 역직렬화 할 때 좀 다른걸 알 수 있다.

    Gson gson = new Gson();
    Collection<Integer> ints = Lists.immutableList(1,2,3,4,5);
     
    // (Serialization)
    String json = gson.toJson(ints); // ==> json is [1,2,3,4,5]
     
    // (Deserialization)
    Type collectionType = new TypeToken<Collection<Integer>>(){}.getType();
    Collection<Integer> ints2 = gson.fromJson(json, collectionType);

     

Designed by Tistory.