在试图弄清楚我的问题是什么之后,我终于决定问你如何解决我的问题。我见过不同的人有同样的问题,我尝试了他们被建议做的所有事情,但对我的问题没有任何帮助。所以基本上我有一个使用 Jersey 构建的 RESTful 服务。对于我的客户,我想以 JSON 格式返回一个对象。我阅读了不同的教程并决定使用 jersey-json-1.8 库是有意义的。我像往常一样将所有内容添加到我的项目中并尝试运行它,但每次我调用服务时(通过 get request atm。)我收到 HTTP 错误代码 500(内部服务器错误)并且我的服务器响应没有消息正文作家可以找到。 如果我返回 XML,它工作得很好,一切都很好。我还尝试将 jersey-json-1.8.jar 复制到我的 Tomcat lib 文件夹,因为我必须使用我正在使用的 mysql lib 执行此操作,但它也没有帮助。 如果你能帮我把这些东西弄好,我会很高兴的! 如果您需要更多信息,请发表评论,我会尽快提供:)
我的项目设置是: 3 不同的包装 1. 我的 RESTfulServices 2. 我的 Java 工作,我处理 SQL 连接等。 3. 一个包,其中存储了我需要使用的所有模型,并且我想以 JSON 格式返回(在我的示例中为试驾路线)
Tomcat 网络服务器 IDE: eclipse 我正在使用 Maven
无论我以什么方式或如何尝试返回对象,它都无法正常工作,并且我不断收到错误消息:
Mapped exception to response: 500 (Internal Server Error)
javax.ws.rs.WebApplicationException: com.sun.jersey.api.MessageException: A message body writer for Java class com.mykong.models.Teststrecke, and Java type class com.mykong.models.Teststrecke, and MIME media type application/json was not found
编辑: 这是我的 JSON 服务方法
@Path("/hellojson")
public class JSONService {
@GET
@Produces(MediaType.APPLICATION_JSON)
public ArrayList<Route> getJSONMsg()
{
Route ts = new Route();
ts.setId(1);
ts.setName("HelloWorld");
Route ts2 = new Route();
ts2.setId(2);
ts2.setName("HelloWorld");
ArrayList<Route> availRoutes = new ArrayList<Route>();
availRoutes.add(ts);
availRoutes.add(ts2);
return availRoutes;
}
}
最佳答案
尝试将 Genson 库添加到您的类路径 http://owlike.github.io/genson/ . 它是一个 json<>java 流和数据绑定(bind) api。它与 Jersey 很好地集成在一起,要让您运行,您需要 0 配置。 Jersey 检测到该库在您的类路径中,并通过委托(delegate)给 Genson 来启用 json 映射。
关于eclipse - Jersey :找不到 Java 类和 MIME 媒体类型应用程序/json 的消息正文编写器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13439386/