Gson을 이용한 json을 객체에 담기

JsonObject -> 객체 변환

Gson 라이브러리는 json으로 받은 데이터를 내가 만든 객체에 자동으로 set 해주는 기능을 제공한다. 먼저 간단한 JsonObject 형태의 json을 객체로 변환해보자.

Member.java

package com.tistory.jekalmin;
public class Member {

    private String id;
    private String name;
    private int age;
    private String address;

    public String getId() {
        return id;
    }
    public void setId(String 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 String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    @Override
    public String toString() {
        return "Member [id=" + id + ", name=" + name + ", age=" + age
                + ", address=" + address + "]";
    }



}

GsonTest.java

package com.tistory.jekalmin;

import com.google.gson.Gson;

public class GsonTest {

    public static void main(String[] args) {

        Gson gson = new Gson();
        String jsonString = "{'id':'jekalmin','name':'Min','age':26,'address':'Seoul'}";
        System.out.println(gson.fromJson(jsonString, Member.class));

    }
}

결과는 다음과 같다.

Member [id=jekalmin, name=Min, age=26, address=Seoul]



JsonArray -> List 변환

이번엔 조금더 까다로운 JsonList를 List로 변환해보자. Member.java 클래스는 동일하다.

GsonTest.java

package com.tistory.jekalmin;

import java.util.Arrays;
import java.util.List;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

public class GsonTest {

    public static void main(String[] args) {

        Gson gson = new Gson();
        String jsonString = "[{'id':'jekalmin','name':'Min','age':26,'address':'Seoul'},{'id':'park','name':'park','age':27,'address':'Seoul'},{'id':'kim','name':'kim','age':28,'address':'Incheon'}]";

        // 방법1
        Member[] array = gson.fromJson(jsonString, Member[].class);
        List<Member> list = Arrays.asList(array);

        // 방법2
        List<Member> list2 = gson.fromJson(jsonString, new TypeToken<List<Member>>(){}.getType());

        System.out.println(list);
        System.out.println(list2);

    }
}

두 방법의 결과는 같은 것을 알 수 있다.

[Member [id=jekalmin, name=Min, age=26, address=Seoul], Member [id=park, name=park, age=27, address=Seoul], Member [id=kim, name=kim, age=28, address=Incheon]]
[Member [id=jekalmin, name=Min, age=26, address=Seoul], Member [id=park, name=park, age=27, address=Seoul], Member [id=kim, name=kim, age=28, address=Incheon]]

방법은 두가지 중에 아무거나 사용해도 될 것 같다.