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