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 |