Java에서 JSON(GSON)사용
Java에서 간단하게 json을 생성하고 파싱하는 방법을 알아보자. 여러가지 라이브러리가 있는데 우리는 여기서 구글에서 만든 gson를 이용하겠다. gson은 비교적 가볍고, 메이븐저장소를 지원하고 전반적으로 성능이 좋아서이다.
먼저 메이븐으로 다운로드한다.
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.0</version>
</dependency>
1. 객체를 json으로 만들자.
Person
이라는 객체가 있다면 이를 json으로 변경해보자.
@Data
public class Person {
private String name;
private int age;
private String gender;
}
import com.google.gson.Gson;
@Test
public void 객체를_JSON으로_변경() {
Person person = new Person();
person.setName("kim");
person.setAge(20);
person.setGender("M");
Gson gson = new Gson();
String json = gson.toJson(person);
System.out.println(json);
}
Gson gson = new Gson();
로 인스턴스를 만들고 String json = gson.toJson(person);
으로 처리하면 바로 json 이 만들어진다.
2. json 을 직접 만들어보자
이번에는 직접 json을 만들어본다. gson에서 제공하는 JsonObject
를 이용해야한다.
import com.google.gson.Gson;
import com.google.gson.JsonObject;
@Test
public void 단순_JSON_만들기() {
Gson gson = new Gson();
JsonObject object = new JsonObject();
object.addProperty("name", "park");
object.addProperty("age", 22);
object.addProperty("success", true);
String json = gson.toJson(object);
System.out.println(json);
}
JsonObject
를 만들고 addProperty()
메소드를 이용해서 만들어주고 마지막으로 gson.toJson()
으로 처리해주면 된다.
3. json을 파싱해보자
이번에는 json을 직접 파싱해보자.
import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
@Test
public void 문자열_JSON을_파싱() {
String json = "{\"name\":\"kim\",\"age\":20,\"gender\":\"M\"}";
JsonParser parser = new JsonParser();
JsonElement element = parser.parse(json);
String name = element.getAsJsonObject().get("name").getAsString();
System.out.println("name = "+name);
int age = element.getAsJsonObject().get("age").getAsInt();
System.out.println("age = "+age);
}
gson에서 제공하는 JsonParser
, JsonElement
를 이용하면 된다. getAsJsonObject
를 이용해서 원하는 타입을 이용해서 값을 받아오면 된다.
4. json을 객체로 변환하자.
json형태로 되어 있는 문자열을 바로 객체로 변환해보자.
@Test
public void JSON문자열을_객체로() {
String json = "{\"name\":\"kim\",\"age\":20,\"gender\":\"M\"}";
Gson gson = new Gson();
Person person = gson.fromJson(json, Person.class);
System.out.println("name = " + person.getName());
System.out.println("age = " + person.getAge());
System.out.println("gender = " + person.getGender());
}
아주 간단하다. fromJson을 사용하면 되고 첫번째 인자로 문자열, 두번째 인자는 문자열을 매핑할 클래스를 지정해주면 된다.
이렇게 gson을 이용해서 간단히 json을 처리할 수 있다. gson에 대한 상세한 내역은 아래에서 확인할 수 있다.
https://github.com/google/gson