Json在泽西REST应用程序中响应严重错误

时间:2016-07-29 06:36:50

标签: java json rest jersey

我正在使用maven学习JERSEY REST API。当我点击GET请求时,我得到以下错误。有趣的是,当我只返回特定的类对象时,我得到了所需的结果,但当我返回所有这些对象的地图时,我收到状态500的错误 - 内部服务器错误。请建议。

错误:

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);

}

P.S:我在pom.xml文件中添加了json相关元素,如下所示

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

我正在使用Maven v2.16

2 个答案:

答案 0 :(得分:0)

添加以下依赖

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

</dependency>

答案 1 :(得分:0)

MOXy和Map不是朋友......我建议您使用Jackson而不是MOXy来(de)序列化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