본문 바로가기
JAVA/Java - Spring

[Java - Spring] Jackson을 이용한 JSON 사용방법

Jackson을 이용한 JSON 사용방법

 

웹에서 자주사용하는 데이터 타입중에 한가지가 JSON입니다. 문제는 JAVA에서는 JSON을 지원하지 않는 다는 것입니다. 그렇기 때문에 별도의 라이브러리를 추가하여 JSON객체를 컨트롤하는데 대표적으로 Jackson라이브러라와 Gson라이브러리가 있습니다. 둘다 많이 사용하는 라이브러리이긴 하지만 Spring과의 호환성이나 퍼포먼스적인 측면에서 Jackson라이브러리가 더 좋다고 판단하여 Jackson라이브러리 위주로 사용하고 있어 오늘 이에 대해 포스팅해보고자 합니다.

 

 

 

 

 

 

1. Spring에서 Jackson 라이브러리 추가

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.10.0</version>
</dependency>

 

Pom.xml에 Jackson라이브러리를 추가만 하면 바로 사용이 가능합니다.

 

 

 

 

 

2. Java객체를 JSON객체로 변환

UserVO userVO = new UserVO();
 
ObjectMapper mapper = new ObjectMapper();
  
// json 파일로 저장
mapper.writeValue(new File("result.json"), userVO);
// byte[] 로 저장
byte[] jsonBytes = mapper.writeValueAsBytes(userVO);
// string 으로 저장
String jsonString = mapper.writeValueAsString(userVO);

 

// 포맷팅하여 스트링으로 변환
String jsonString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(userVO);
  
// 포맷팅하여 파일로 저장
mapper.writerWithDefaultPrettyPrinter().writeValue(new File("result.json"), userVO);

 

첫번째 코드로 JSON으로 변환한 String과 JSON파일을 보면 개행처리가 안되서 가독성이 불편한 경우가 있습니다.

그럴경우에는 writerWithDefaultPrettyPrinter()함수를 이용하면 개행처리가 되서 가독성이 좋아집니다.

 

 

 

 

 

3. JSON객체를 Java객체로 변환

// JSON 파일에서 읽기
UserVO userVO = mapper.readValue(new File("data.json"), userVO.class);
//  URL 에서 읽기
value = mapper.readValue(new URL("http://some.com/api/entry.json"), userVO.class);
// String 으로 읽기
value = mapper.readValue("{\"id\":\"koko123\", \"pw\":1234}", userVO.class);

 

 

 

 

 

4. JSON문자열을 JAVA객체로 변환

ObjectMapper mapper = new ObjectMapper();
String jsonStr = "[{"이름" : "사과"}, {"가격" : "1000원"}]";

List<Map<String, Object>> listMap = mapper.readValue(jsonStr, new TypeReference<List<Map<String, Object>>>(){});

 

 

 

 

 

댓글