2016-07-29 2 views
0

저는 Maven을 사용하여 JERSEY REST API를 배우고 있습니다. 나는 유창한 요구에 부딪혔다. 흥미로운 점은 특정 클래스 개체 만 반환 할 때 원하는 결과를 얻었지만 모든 개체의 맵을 반환하면 상태 500 - 내부 서버 오류로이 오류가 발생합니다. 제발 제안 해주세요.저지 REST 애플리케이션의 Json 응답 심각한 오류

오류 :

SEVERE: MessageBodyWriter not found for media type=application/json, 
type=class java.util.HashMap, genericType=java.util.Map<java.lang.Integer, message.Message>. 

발생하기 쉬운 오류 :

@GET 
@Produces(MediaType.APPLICATION_JSON) 
public Map<Integer,Message> getAll(){ 
    ms.sample(); 
    return ms.getAllMessages(); 

} 

같은 코드를하지만, 특정 개체를 반환, 잘 작동 :

@GET 
@Produces(MediaType.APPLICATION_JSON) 
public Message getAll(){ 
    ms.sample(); 
    return ms.getAllMessages().get(1); 

} 

PS를 : 나는 JSON 관련 요소에 추가 한 다음과 같이 pom.xml 파일

,210
<dependency> 
     <groupId>org.glassfish.jersey.media</groupId> 
     <artifactId>jersey-media-moxy</artifactId> 
    </dependency> 

나는 메이븐 2.16 버전을 사용하고

+0

잭슨 의존성이 있습니까? – sidgate

답변

0

목시와 Map의 난 당신이 (비) 직렬화하는 대신 목시의 잭슨을 사용하는 것이 좋습니다 ... 친구가 없습니다 JSON.

을하려면 jersey-media-moxy 종속성을 제거하고 다음을 추가

자세한 내용
<dependency> 
    <groupId>org.glassfish.jersey.media</groupId> 
    <artifactId>jersey-media-json-jackson</artifactId> 
    <version>2.23.1</version> 
</dependency> 

Jersey documentation을 확인합니다.

+0

고마워, 효과가 있었다. 하지만 하나 더, 왜 pom.xml 파일에 기본 Moxy 관련 요소가 있습니까? – Aditya

0

추가 다음과 같은 의존성

<dependency> 
    <groupId>org.glassfish.jersey.media</groupId> 
    <artifactId>jersey-media-json-jackson</artifactId> 

</dependency>