2013-10-22 6 views
0

직렬화 된 HashMap을 반환하는 것에 대해 많은 질문이 있지만 아주 좋은 답변을 찾지 못했습니다. 내 REST 서비스에서 다음Jersey가 편리한 서비스에서 HashMap을 json으로 serialize하는 가장 간단한 방법은 무엇입니까?

@XmlElement(name = "Calibration") 
private HashMap<String, Double> entry = new HashMap<String, Double>(); 

:

@GET 
@Produces(MediaType.APPLICATION_JSON) 
@Path("/entry") 
public HashMap<String, Double> current() { 
    System.out.println("calibration request"); 
    entry.put("test", 3.00); 
    return entry; 
} 

서비스가있을 때 그것은 javax.ws.rs.WebApplicationException을 던졌습니다

은 지금은 단지 같은 휴식 서비스를 만들려면

com.sun.jersey.api.MessageException : Java 클래스 java.util.HashMap 및 Java 유형 j의 메시지 본문 작성자 ava.util.HashMap 및 MIME 미디어 유형 application/json을 찾을 수 없습니다.

내 pom.xml 파일은 경우에 유용 : 나는 웹 컨테이너로 그리즐리을 사용하고

<dependency> 
     <groupId>com.sun.grizzly</groupId> 
     <artifactId>grizzly-servlet-webserver</artifactId> 
     <version>1.9.18-i</version> 
    </dependency> 
    <dependency> 
     <groupId>com.sun.grizzly</groupId> 
     <artifactId>grizzly-comet-webserver</artifactId> 
     <version>1.9.46</version> 
    </dependency> 
    <dependency> 
     <groupId>com.sun.jersey</groupId> 
     <artifactId>jersey-grizzly</artifactId> 
     <version>1.9.1</version> 
    </dependency> 
    <dependency> 
     <groupId>com.sun.jersey</groupId> 
     <artifactId>jersey-json</artifactId> 
     <version>1.9.1</version> 
    </dependency> 

.

답변

1

아마도 여기에서 잭슨이 가장 쉽게 선택할 수 있습니다 (저지 JSON 모듈에는 잭슨 지원이 내장되어 있습니다). web.xml 또는 구성 객체를 통해 POJO JSON 지원을 구성 할 수 있습니다 (POJO support 참조).

참고 : 최신 저지 1.x 버전은 1.17.1입니다. 가능한 경우이 버전 사용을 고려하십시오.

+0

답변 해 주셔서 감사합니다 :) 그러나 1.17.1은 불가능합니다. 죄송합니다. – wceo

0

이렇게하는 가장 좋은 방법은 HashMap을 간단한 빈으로 매핑하고 HashMap 대신 빈을 반환하는 것입니다.

관련 문제