본문 바로가기
Debugging&Solution/Debugging

[Debugging] Spring 프로젝트에서 JSONObject 사용 시 406 error

by 코딩의성지 2019. 10. 12.

오늘부터는 개발을 하다가 발생하는 에러에 대해서도 하나 씩 정리를 해보려고 한다.

 

Spring 에서 프로젝트를 진행하다 406 Not Acceptable 이라는 오류를 만났다.

 

검색을 해보니 406 Not AcceptableAccept 같은 헤더에 기입된 형식을 생성하지 못할 때 발생하는 에러라는 것을 알게 되었다.

 

계속 삽질을 하다가 문제를 찾았다. 가장 흔한 문제이기도 한 jackson 라이브러리가 없어서 발생한 것이었다.

 

 

해당 내용을 pom.xml 에 추가해주니깐 문제가 싹 ~ 해결 되었다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.6.3</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.6.3</version>
        </dependency>
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>1.5.0</version>
        </dependency>
 
 

아 ! 저거 추가할 때 버전을 잘 생각해주면 좋겠다. 2.7 버전 부터는 JDK 7 이상이 필요하고 JDK6을 지원하는 마지막 버전은 2.6.7.1 이다. 나는 JDK6 을 써서 위와 같이 선언했다.

 

그냥 저것만 추가하고 넘어간다면, 실력은 제자리 일거라 생각한다. Jackson 라이브러리가 뭔지는 알고 넘어가도록 하자.

 

Jackson 라이브러리는 Spring Framework에서 빼놓을 수없는 아주 중요한 라이브러리 중 하나이다. 

Spring 을 사용해서 개발하다보면 단순하게 데이터 전달 목적으로 사용하고 싶을 때가 있다. 예를 들면, 앱에서 서버의 데이터를 가져올 때, JSP 페이지를 호출하고 거기 있는 값을 가져오기 보다 그냥 JSON 이나 XML 데이터 자체를 가져오면 편하다.

 

그냥 plain/text 형식으로 보내도 뭐 문제는 없겠지만 보통 개발자들은 편리함을 위해 XML 이나 JSON을 사용한다.

 

아 ... 서론이 길었다. 아무튼 이 Jackson이란 녀석은 JSON 데이터 구조를 처리해주는 라이브러리라고 알려져 있다. 하지만 JSON 뿐만 아니라 XML, YAML, CSV 같은 다양한 형식의 데이터 역시 지원한다.

 

Jackson은 스트림 방식이라 속도가 빠르고 유연하다. 그리고 다양한 third party data type을 지원하고 annotation 방식으로 메타 데이타를 기술할 수 있으므로 JSON 의 약점 중 하나인 문서화와 데이타 validation 문제를 해결할 수 있다는 장점이 있다.

이렇게 글로 보면 뭐하겠나. 백문이 불여일타라고 직접 Jackson을 이용해 프로젝트를 진행해보길 바란다. 그럼 오늘 도 즐코~~

반응형

댓글