Java에서 JSON 처리하는 방법

Java에서는 JSON 데이터를 다루기 위한 다양한 라이브러리가 제공됩니다. JSON은 서버와 클라이언트 간의 데이터 교환에 널리 사용되는 형식이기 때문에 Java 개발 환경에서도 안정적으로 처리할 수 있어야 합니다. Jackson과 Gson은 Java에서 가장 널리 사용하는 JSON 라이브러리입니다.

 

JSON 예제 데이터

다음은 JSON 문자열 예제입니다. 이 데이터는 사용자 정보를 표현하는 구조로 구성되어 있습니다.

{
  "id": 10,
  "name": "Kim",
  "email": "kim@test.com",
  "active": true
}

이 형태는 API 응답에서 흔히 볼 수 있는 구조입니다.

JSON 구조와 매핑될 Java 클래스

JSON 데이터를 Java 객체로 변환하려면 동일한 형태의 클래스를 만들어야 합니다.

public class User {
    private int id;
    private String name;
    private String email;
    private boolean active;

    public int getId() { return id; }
    public void setId(int id) { this.id = id; }

    public String getName() { return name; }
    public void setName(String name) { this.name = name; }

    public String getEmail() { return email; }
    public void setEmail(String email) { this.email = email; }

    public boolean isActive() { return active; }
    public void setActive(boolean active) { this.active = active; }
}

 

이 클래스는 JSON의 필드 구조와 동일한 속성을 가지고 있습니다.

 

Jackson 라이브러리 소개

Jackson은 Java에서 가장 많이 사용되는 JSON 처리 라이브러리입니다. 속도가 빠르고 기능이 다양해 대규모 서비스에서 안정적으로 사용됩니다. Spring Framework에서도 기본적으로 Jackson을 활용해 JSON을 처리합니다.

Jackson을 이용한 JSON 문자열 파싱 예제

다음은 JSON 문자열을 User 객체로 변환하는 예제입니다.

String jsonString = "{ \"id\":10, \"name\":\"Kim\", \"email\":\"kim@test.com\", \"active\":true }";

ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(jsonString, User.class);

 

변환된 User 객체에는 다음 값이 담깁니다.

id = 10
name = "Kim"
email = "kim@test.com"
active = true

JSON의 값이 Java 필드에 그대로 매핑됩니다.

 

Jackson을 이용한 Java 객체의 JSON 변환 예제

Java 객체를 JSON 문자열로 변환하는 방식입니다.

User user = new User();
user.setId(10);
user.setName("Kim");
user.setEmail("kim@test.com");
user.setActive(true);

ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(user);

변환 결과는 다음과 같습니다.

{"id":10,"name":"Kim","email":"kim@test.com","active":true}

객체 내부 데이터가 JSON 형식으로 변환된 결과입니다.

Jackson에서 JSON 필드 이름을 매핑하는 방법

JSON의 키 이름과 Java 필드 이름이 다를 때는 @JsonProperty를 사용해 매핑할 수 있습니다.

public class User {
    @JsonProperty("user_name")
    private String name;
}

이 설정은 외부 API와 연동할 때 자주 사용됩니다.

 

Gson 라이브러리 소개

Gson은 Google에서 개발한 JSON 처리 라이브러리입니다. 구조가 단순하고 설정이 적어 빠르게 JSON을 다뤄야 하는 상황에서 유용합니다. 안드로이드 개발에서도 자주 사용됩니다.

Gson을 이용한 JSON 파싱 예제

다음은 Gson으로 JSON 문자열을 User 객체로 변환하는 방식입니다.

String jsonString = "{ \"id\":10, \"name\":\"Kim\", \"email\":\"kim@test.com\", \"active\":true }";

Gson gson = new Gson();
User user = gson.fromJson(jsonString, User.class);

User 객체는 JSON의 값과 동일한 데이터를 가지게 됩니다.

Gson을 이용한 Java 객체의 JSON 변환 예제

User user = new User();
user.setId(10);
user.setName("Kim");
user.setEmail("kim@test.com");
user.setActive(true);

Gson gson = new Gson();
String json = gson.toJson(user);

Java 객체를 JSON 문자열로 변환하는 간단한 예제입니다.

 
 

변환된 JSON 문자열은 다음과 같습니다.

 
{"id":10,"name":"Kim","email":"kim@test.com","active":true}

Gson은 구문이 간단하여 JSON 변환 작업을 빠르게 수행할 수 있습니다.

JSON 배열 처리 예제

JSON 배열은 Java에서 보통 List 형태로 변환합니다. Jackson의 TypeReference를 사용하면 배열도 쉽게 파싱할 수 있습니다.

String jsonArrayString = "[{\"id\":1,\"name\":\"Kim\"},{\"id\":2,\"name\":\"Lee\"}]";

ObjectMapper mapper = new ObjectMapper();
List<User> users = mapper.readValue(jsonArrayString, new TypeReference<List<User>>(){});

이 코드는 JSON 배열을 User 객체 목록으로 변환합니다.

JSON 처리 시 고려해야 할 점

JSON 필드 이름과 Java 클래스의 필드 이름이 서로 일치해야 올바르게 변환됩니다. 이름이 다를 경우 매핑 설정이 필요하며, 자료형이 맞지 않는 경우 예외가 발생할 수 있습니다. JSON 데이터의 구조를 정확히 이해하고 클래스 구조를 설계하는 과정이 중요합니다.

댓글

Designed by JB FACTORY