상세 컨텐츠

본문 제목

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

자바강좌

by somiyuralove 2021. 4. 8. 07:42

본문

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]]
방법은 두가지 중에 아무거나 사용해도 될 것 같다.

관련글 더보기

댓글 영역