웹 개발

JSON 매핑

Blue_bull 2025. 2. 9. 21:28

JSON과 매핑의 상관관계

JSON(JavaScript Object Notation)은 데이터를 구조화하여 표현하는 방식이고, 매핑(mapping)은 이를 프로그래밍 언어의 객체(클래스)와 연결하는 과정이야.
즉, JSON 데이터를 객체로 변환하거나 객체를 JSON으로 변환하는 과정이 매핑과 관련이 있어.


JSON 매핑의 핵심 개념

1️⃣ JSON → 객체 변환 (Deserialization, 역직렬화)

  • JSON 데이터를 객체로 변환하는 과정.
  • Java에서는 ObjectMapper를 사용하여 변환.
{
    "name": "Alice",
    "age": 25
}
class Person {
    public String name;
    public int age;
}
ObjectMapper objectMapper = new ObjectMapper();
String json = "{ \"name\": \"Alice\", \"age\": 25 }";

Person person = objectMapper.readValue(json, Person.class);
System.out.println(person.name); // "Alice"
System.out.println(person.age);  // 25

✔ JSON 데이터를 Java 객체로 변환하여 프로그램에서 쉽게 사용 가능!


2️⃣ 객체 → JSON 변환 (Serialization, 직렬화)

  • 객체를 JSON 문자열로 변환하는 과정.
  • writeValueAsString()을 사용하면 쉽게 변환 가능.
Person person = new Person();
person.name = "Alice";
person.age = 25;

String jsonString = objectMapper.writeValueAsString(person);
System.out.println(jsonString); 
// {"name":"Alice","age":25}

객체 데이터를 JSON으로 변환하여 네트워크 전송, API 응답 등에 활용할 수 있음.


JSON 매핑과 관련된 주요 개념

1️⃣ 자동 매핑 (Jackson, Gson)

  • @JsonProperty를 사용하여 JSON 필드명을 다르게 설정 가능.
class User {
    @JsonProperty("user_name")
    public String name;
}

✔ JSON 필드 user_name이 Java 객체의 name과 자동 매핑됨.


2️⃣ 컬렉션(List, Map) 매핑

  • JSON 배열을 List로 변환 가능.
{
    "users": [
        {"name": "Alice", "age": 25},
        {"name": "Bob", "age": 30}
    ]
}
class UserList {
    public List<Person> users;
}

✔ JSON 배열을 Java List로 변환하여 활용 가능.


3️⃣ 네트워크 API와 JSON 매핑

  • REST API에서 JSON 매핑을 사용하여 데이터 송수신.
RestTemplate restTemplate = new RestTemplate();
Person response = restTemplate.getForObject("https://api.example.com/user/1", Person.class);

API 응답을 Java 객체로 자동 변환하여 쉽게 활용 가능.


정리

JSON 매핑JSON 데이터를 객체로 변환(Deserialization)하거나 객체를 JSON으로 변환(Serialization)하는 과정
✔ Java에서 ObjectMapper, Gson, RestTemplate 등을 사용하여 JSON을 쉽게 다룰 수 있음
List, Map 등 컬렉션 매핑도 가능하며, API 통신에서 JSON을 활용할 때 필수적

📌 즉, JSON과 매핑은 데이터 교환을 쉽게 하기 위해 필수적인 기술이야! 🚀

지금까지 배운 내용이면 초급 개발자로서 JSON을 다룰 기초는 충분히 갖췄어! 하지만, 자유자재로 활용하려면 몇 가지 추가적으로 연습해야 할 개념이 있어. 아래 내용을 익히면 JSON을 좀 더 능숙하게 다룰 수 있을 거야.


1. JSON과 Java 컬렉션(List, Map) 매핑

✔ JSON을 List, Map과 변환하는 방법을 익혀야 실무에서 활용하기 쉬워.

📌 JSON → List 변환 (Java)

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.List;

String json = "[{\"name\": \"Alice\", \"age\": 25}, {\"name\": \"Bob\", \"age\": 30}]";
ObjectMapper objectMapper = new ObjectMapper();

List<Person> people = objectMapper.readValue(json, new TypeReference<List<Person>>() {});
System.out.println(people.get(0).name); // "Alice"

✔ JSON 배열을 List 형태로 변환하는 방법

📌 JSON → Map 변환

String json = "{ \"name\": \"Alice\", \"age\": 25 }";
Map<String, Object> map = objectMapper.readValue(json, new TypeReference<Map<String, Object>>() {});
System.out.println(map.get("name")); // "Alice"

✔ JSON을 Map<String, Object> 형태로 변환하여 key-value 접근


2. JSON을 활용한 REST API 요청/응답 처리

실제 개발에서는 JSON을 API 요청/응답의 데이터 형식으로 많이 사용해.

📌 Spring Boot에서 JSON 데이터를 응답하는 API 예제

@RestController
@RequestMapping("/api")
public class UserController {

    @GetMapping("/user")
    public Person getUser() {
        return new Person("Alice", 25); // 자동으로 JSON 변환
    }
}

✔ 클라이언트가 /api/user 요청을 보내면, JSON 응답을 받게 됨


3. JSON을 파일로 저장하고 읽기

JSON을 파일로 저장하고 불러오는 방법도 알아두면 좋아.

📌 JSON 파일 저장

objectMapper.writeValue(new File("data.json"), person);

📌 JSON 파일 읽기

Person person = objectMapper.readValue(new File("data.json"), Person.class);
System.out.println(person.name);

✔ JSON 데이터를 파일에서 읽고 저장하는 방식도 활용할 수 있어야 함


4. JSON 데이터 검증 및 처리

JSON이 잘못된 형식이면 파싱 오류가 발생할 수 있어. 예외 처리를 통해 안정적인 코드 작성이 필요해.

📌 예외 처리 (JSON 파싱 오류 방지)

try {
    Person person = objectMapper.readValue(json, Person.class);
} catch (JsonProcessingException e) {
    System.out.println("JSON 파싱 오류 발생!");
}

✔ JSON 데이터가 잘못된 경우 오류를 방지하고 안전하게 처리


결론: 자유자재로 JSON을 다루기 위한 체크리스트

✔ JSON을 Java 객체로 변환 (Deserialization) 할 수 있는가?
✔ Java 객체를 JSON으로 변환 (Serialization) 할 수 있는가?
✔ JSON을 List<> 또는 Map<> 구조로 변환할 수 있는가?
✔ REST API에서 JSON을 요청 및 응답 데이터 형식으로 사용할 수 있는가?
✔ JSON 데이터를 파일로 저장하고 불러오는 방법을 알고 있는가?
✔ JSON 데이터가 잘못된 경우 예외 처리를 할 수 있는가?

🚀 위 개념을 연습하고 있으면, JSON을 자유자재로 다룰 준비가 된 거야!
👍 이제 실습하면서 JSON을 활용해보자! 😊

'웹 개발' 카테고리의 다른 글

JSON, JavaScript의 객체 생성 방식과 리터럴  (0) 2025.02.09
JSON이란?  (0) 2025.02.09
JSP 스코프  (0) 2025.02.09
HTTP  (0) 2025.02.09
HTML 구조이해1 - DOM(Document Object Model)이란?  (0) 2025.02.09