2023.02.20

김근호·2023년 2월 19일
1

Spring

목록 보기
6/9

Json 파싱

우리가 어떤 데이터를 요청을 보냈고, JSON형태로 응답을 받아서 서비스 로직 처리를 하려고 한다고 가정을 하자.
그렇다면 우리는 응답 받은 JSON을 바로 사용해도 되는걸까?

여기 코드에서 보면 Json형태로 데이터를 받아온 뒤 바로 사용 하는게 아니라 ObjectMapper를 통해서 객체화를 시킨 뒤 사용한다.
여기서 궁금증이 들었다. 왜 객체화를 시켜서 사용을 해야 되는걸까?
이유는 데이터를 바로 사용 하면 데이터가 포함된 Json을 통째로 인식을 해서 오류가 발생한다.
그렇기 때문에 Json을 객체화를 시켜준 뒤 객체에서 우리가 원하는 부분만 key를 통해서 사용하면 된다.

ObjectMapper

  • JSON 컨텐츠를 Java 객체로 deserialization 하거나 Java 객체를 JSON으로 serialization 할 때 사용하는 Jackson 라이브러리의 클래스이다.
  • ObjectMapper는 생성 비용이 비싸기 때문에 bean/static으로 처리하는 것이 좋다.
  • ObjectMapper를 이용하면 JSON을 Java 객체로 변환할 수 있고, 반대로 Java 객체를 JSON 객체로 serialization 할 수 있다

직렬화(Serialization), 역직렬화(Deserialization)

직렬화(Serialization)

  • 객체를 직렬화하여 전송 가능한 형태로 만드는 것을 의미한다. 객체들의 데이터를 연속적인 데이터로 변형하여 Stream을 통해 데이터를 읽도록 해준다
  • 이것은 주로 객체들을 통째로 파일로 저장하거나 전송하고 싶을 때 주로 사용된다.

역직렬화(Deserialization)

  • 직렬화된 파일 등을 역으로 직렬화하여 다시 객체의 형태로 만드는 것을 의미한다. 저장된 파일을 읽거나 전송된 스트림 데이터를 읽어 원래 객체의 형태로 복원한다.

위에서 JSON을 객체화 시키는 부분이 "역직렬화"부분이다

다음번에는 JSONObject파싱과 ObjectMapper파싱의 차이점을 알아보자

<추가적으로 알아본 개념>

RestTemplate

  • spring에서 지원하는 객체로 간편하게 Rest 방식 API를 호출할 수 있는 Spring 내장 클래스입니다
  • Rest API 서비스를 요청 후 응답 받을 수 있도록 설계되어있으며 HTTP 프로토콜의 메소드
    (ex. GET, POST, DELETE, PUT)들에 적합한 여러 메소드들을 제공합니다
    exchange()함수
profile
앞만 보고 나아가자!

0개의 댓글