java - 获取 "MessageBodyWriter not found for media type=application/json"尝试通过 JAX-RS Web 服务发送 JSON 对象

标签 java json web-services rest jax-rs

我正在尝试通过 JAX-RS Web 服务发送 JSON 对象。 我的文件 web.xml 是:

<servlet>
 <description>JAX-RS Tools Generated - Do not modify</description>
 <servlet-name>JAX-RS Servlet</servlet-name>
 <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
  <init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>it.notifire</param-value>
  </init-param>
  <init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
  <servlet-name>JAX-RS Servlet</servlet-name>
  <url-pattern>/jaxrs/*</url-pattern>
</servlet-mapping>

模拟我要发送的对象的类是:

public class GPSCoordinate {

private float latitudine;
private float longitudine;

 public float getLatitudine() {
    return latitudine;
}
public void setLatitudine(float latitudine) {
     this.latitudine = latitudine;
}
public float getLongitudine() {
    return longitudine;
}
public void setLongitudine(float longitudine) {
    this.longitudine = longitudine;
}
}

根类资源是:

@Path("position")
public class Position {

    @Context
private UriInfo context;

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public GPSCoordinate getHTML() {

        GPSCoordinate coord = new GPSCoordinate();
        coord.setLatitudine(90.45f);
        coord.setLongitudine(34.56f);

        return coord;
    }
}

现在,当我尝试访问该服务时,我将浏览器指向以下链接

http://localhost:8080/Notifire/jaxrs/position

我收到以下错误:

消息 org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyWriter not found for media type=application/json

在我的 WEB-INF/lib 文件夹中,我有 jersey JAX-RS 实现的最新版本 (jaxrs-ri-2.5.jar) 和 jersey-json.jar 存档。

任何帮助将不胜感激。

最佳答案

尝试添加 Genson到您的类路径,它将自动启用 JSON 支持。

Genson 是一个用于 json 和 java/scala 的数据绑定(bind)和流媒体库。它实现了 JAX-RS 的 MessageBodyReader/Writer 扩展点,让 jersey 能够自动检测 Genson 并将其用于 Json 解析/写入。

您可以找到更多关于 Gensons integration with JaxRS 的信息( Jersey 和 cie)。

关于java - 获取 "MessageBodyWriter not found for media type=application/json"尝试通过 JAX-RS Web 服务发送 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20762109/

相关文章:

java - 更新小部件和 Activity 的数据

java - 如何缓存 Json 数据以供离线使用?

java - Jsoup 删除以 Href 开头的链接 href 属性

java - Spring:方法 getBean(String...) 如何根据输入字符串查找 bean?

javascript - json解析空响应时Whatwg Fetch失败,我该如何防止它?

android - Volley ,不在 JsonArrayRequest 中传递任何参数

jquery - 如何使用 ajax 发送 XML?

Java - 递归双阶乘算法

json - 反序列化为具有枚举成员的结构

java - 如何向不同的网络服务发送多个异步请求?