2016-07-29 68 views
0

我正在用maven學習JERSEY REST API。我遇到以下錯誤乳清我打GET請求。有趣的一點是當我只返回特定的類對象時,我得到了期望的結果,但是當我返回所有這些對象的地圖時,出現狀態500 - 內部服務器錯誤。請建議。Json響應澤西REST應用程序中的嚴重錯誤

錯誤:

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文件如下

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

我使用Maven v2.16

+0

你有傑克遜依賴? – sidgate

回答

0

莫西和Map s爲沒有朋友......我建議你使用傑克遜,而不是莫西到(反)序列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> 
相關問題