【问题标题】:Json response severe error in jersey REST application球衣REST应用程序中的Json响应严重错误
【发布时间】:2016-07-29 06:36:49
【问题描述】:

我正在使用 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

【问题讨论】:

  • 你有杰克逊依赖吗?

标签: java json rest jersey


【解决方案1】:

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

【讨论】:

  • 谢谢,它成功了。但是还有一个,为什么 pom.xml 文件有默认的 moxy 相关元素呢?
【解决方案2】:

添加以下依赖

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

</dependency>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-04
    • 1970-01-01
    • 2014-05-21
    • 1970-01-01
    • 2016-04-05
    相关资源
    最近更新 更多