728x90
반응형
JSON
1) "JavaScript Object Notation"의 약어로, 데이터 교환을 위한 경량의 형식
2) 주로 웹에서 데이터를 주고받거나 저장하는 데 사용
3) 키-값 쌍의 집합으로 구성되며, 중괄호 {} 안에 각 키-값 쌍이 위치
JSON 예시
{
"name": "John",
"age": 30,
"isStudent": false,
"hobbies": ["reading", "swimming", "painting"],
"address": {
"street": "123 Main St",
"city": "New York",
"country": "USA"
},
"favoriteNumbers": [7, 21, 45],
"car": null
}
ObjectMapper
1) Jackson 라이브러리의 일부로 Java 객체와 JSON 간 변환하는 작업을 쉽게 수행할 수 있도록 도와주는 라이브러리
2) JSON에서 객체로 변환(역직렬화: Deserialization)
3) 객체에서 JSON으로 변환(직렬화: Serialization)
public class JsonExample {
public static void main(String[] args) throws Exception {
// ObjectMapper 인스턴스 생성 및 초기화
ObjectMapper objectMapper = new ObjectMapper();
// JSON 데이터를 객체로 변환 (역직렬화)
String json = "{\"name\":\"John\",\"age\":30}";
Person person = objectMapper.readValue(json, Person.class);
System.out.println("Name: " + person.getName());
System.out.println("Age: " + person.getAge());
// 객체를 JSON으로 변환 (직렬화)
Person newPerson = new Person("Alice", 25);
String newJson = objectMapper.writeValueAsString(newPerson);
System.out.println("JSON: " + newJson);
}
}
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
JSON To DTO 샘플코드
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JsonUtil {
private static Logger logger = LoggerFactory.getLogger(JsonUtil.class);
/**
* JSON을 파라미터로 받은 Class로 파싱 후 리턴한다.
* 예시) {"data": "{\"articleId\":\"A1\",\"content\":\"content\",\"regId\":\"john@example.com\"}"}
* @param <T> 파싱된 DTO
* @param jsonString String타입의 JSON
* @param clazz JSON을 파싱할 DTO Class
* @return DTO로 파싱된 JSON
*/
public static <T>T jsonToDto(String jsonString, Class<T> clazz) {
try {
ObjectMapper objectMapper = new ObjectMapper();
return objectMapper.readValue(jsonString, clazz);
} catch(Exception e) {
logger.error("", e);
return null;
}
}
}
728x90
반응형
'백엔드 > 자바' 카테고리의 다른 글
Optional.findAny Optional.findFirst 개념 및 샘플코드 (0) | 2023.11.15 |
---|---|
[백엔드/Java] HTTP통신 JSON 데이터 요청 및 응답 처리 개념 및 샘플코드 (0) | 2023.10.03 |
[BE/Java] Optional 개념 및 샘플코드 (0) | 2023.07.26 |
[BE/Java] Stream.map().collect() 개념 및 샘플코드 (0) | 2023.07.22 |
[BE/Java] Stream.of()를 사용한 값체크 샘플코드 (0) | 2023.07.20 |
댓글