HANDA개발
HANDA개발공부
HANDA개발
전체 방문자
오늘
어제
  • HANDA_list
    • 취업일지
    • 일상
    • TIL
    • Linux
    • RabbitMQ
    • Spring
      • Security
      • Batch
      • Project
    • ERROR
    • DB
      • Oracle
      • PostgreSQL
    • JUnit
    • JAVA
    • AWS
    • OAuth2.0
    • Redis
    • API
    • Jenkins
    • Nigix
    • CS
    • 코테준비
      • 자료구조
      • 알고리즘
    • 학교수업
    • 디자인패턴

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 역직렬화
  • garbaage
  • EAI
  • JVM
  • gson
  • @Valid
  • mybatis
  • Spring
  • MQ
  • 애플코딩
  • SpringBatch
  • Parameter
  • 프로시져호출
  • Job
  • 어노테이션
  • batch
  • 상태관리
  • 공부준비
  • 스프링배치
  • 명령어
  • oracle
  • 프로그래머스
  • JAVA명령어
  • 데이터베이스
  • error
  • 재실행
  • 다른파라미터
  • java실행과정
  • cmd
  • valid어노테이션

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
HANDA개발

HANDA개발공부

jackson 으로  json값 주고 받기 (+ gson)
TIL

jackson 으로 json값 주고 받기 (+ gson)

2022. 8. 25. 15:14

json은 왜 사용할까?

JSON 의 목적은 이기종 간의 데이터 교환이다.

앱 ↔ 서버 / 자바 ↔자바스크립트

 

네트워크를 사용하는 데이터통신은 데이터를 byte형태로 전달하기때문에

굳이 json이 없어도 데이터 통신이 가능하지만,

우리는 누군가와 개발을 같이 하기때문에 상대방이 데이터를 알아볼 수 있도록

json 혹은 xml 처럼 공식 데이터 포맷으로 값을 주고 받아야한다.

 

초반에는 xml을 사용했지만 html의 대크구조로 크기가 무겁고 복잡해져
최소한의 용량으로 데이터 전송이 가능하고 가독성이 좋으며 특정언어에 종속되지 않은

Json을 사용하게 된것이다.

                     xml 형태                                                                                                           json형태                                  

 

Spring에서 json으로 값 주고받기

spring에서 json값으로  http통신을 하고 싶을 때 값을 전달하거나 받을때

jackson 혹은 gson이라는  libarary를 통해 json으로 변환되어 보낼 수 있다.

 

json 지원 library

- Gson (구글에서 만든 라이브러리 - > pom.xml에 따로 추가해줘야함.)

- jackson (Spring 프레임워크에 내장)

 

라이브러리 사용법.

출처 : https://h-kkaemi.tistory.com/2

 

json이라는 것은 기본적으로 하나의 string 형태이다.

따라서 요청할 땐 객체로 되어있는 값들을 string으로 변환(직렬화)해줘야하고, 
응답을 받을 땐
객체 혹은 Map형태의 객체로 역직렬화를 시켜줘야한다.

 

직렬화, serializing, marshal : java 객체 -> json

역직렬화, deserializing, umarshal : json -> java 객체

 

Jackson의 직렬화

ObjectMapper mapper = new ObjectMapper();

String jsonResult = mapper.writeValueAsString(json으로 바꾸고싶은 java객체);

 

Jackson의 역직렬화

String jsonInput = "json 데이터";
ObjectMapper mapper = new ObjectMapper();
Example exam = mapper.readValue(jsonInput, Example.class);

Gson의 직렬화

String jsonResult = new Gson().toJson(json으로 바꾸고싶은 java객체);

 

Gson의 역직렬화

String jsonInput = "json 데이터";

Example exam = new Gson().fromJson(jsonInput, Example.class);

 

출처 : https://www.baeldung.com/jackson-vs-gson

jackson의 장점

- 스프링프레임워크, JAX-RS(Jersey, Apache CXF, RESTEasy, Restlet) 등에서 지원. → jackson을 많이 쓰는 이유.

- 어노테이션 지원 

  • @JsonIgnoreProperties: 무시할 속성이나 속성 목록을 표시하는 데 사용.
  • @JsonIgnore : 필드 레벨에서 무시 될 수있는 속성을 표시하는 데 사용.
  • @JsonIgnoreType : 주석이 달린 형식의 모든 속성을 무시하도록 지정하는 데 사용.
  • @JsonInclude : 어노테이션 속성을 제외 하는 데 사용.(getter제외)
  • @JsonAutoDetect :  json 매핑법칙을 변경할 수 있음.
  • 출처 : https://cheese10yun.github.io/jackson-annotation-03/

 

Gson의 장점

- json 변환 방법이 간단하다 (toJson/fromJson.)

- 역직렬화때 java entities가 따로 필요없다.

 

https://www.baeldung.com/jackson-vs-gson



 

'TIL' 카테고리의 다른 글

DeadLock 피하기_커넥션풀 설정과 스레드 개수  (0) 2022.09.02
SSL Exception 해결하기. 500에러  (0) 2022.08.29
cmd 명령어 정리  (0) 2022.08.25
환경변수 설정.  (0) 2022.08.24
외부 API호출은 백엔드에서!  (0) 2022.08.22
    'TIL' 카테고리의 다른 글
    • DeadLock 피하기_커넥션풀 설정과 스레드 개수
    • SSL Exception 해결하기. 500에러
    • cmd 명령어 정리
    • 환경변수 설정.
    HANDA개발
    HANDA개발

    티스토리툴바