Java 如何使用Jersey序列化为Json?(I';m使用渐变)

Java 如何使用Jersey序列化为Json?(I';m使用渐变),java,google-app-engine,maven,gradle,jersey,Java,Google App Engine,Maven,Gradle,Jersey,我试图让Jersey在返回对象时序列化对象,如下所示: @POST @Path("/new") @Consumes(MediaType.TEXT_PLAIN) @Produces(MediaType.APPLICATION_JSON) public User newUser(String username) { return new User(username); } 当我使用例如“john”对此进行POST请求时,它应该使用用户的json表示进行响应。然而,它所做的只是给出一个错误状

我试图让Jersey在返回对象时序列化对象,如下所示:

@POST
@Path("/new")
@Consumes(MediaType.TEXT_PLAIN)
@Produces(MediaType.APPLICATION_JSON)
public User newUser(String username) {
    return new User(username);
}
当我使用例如“john”对此进行POST请求时,它应该使用
用户
的json表示进行响应。然而,它所做的只是给出一个错误状态500,并且服务器记录以下内容

全局读卡器拦截器: org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor 全局写入程序拦截器: org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor org.glassfish.jersey.server.internal.json与PaddingInterceptor 姓名:卡尔 返回:cd.orbit.server。User@4c84f510 2014年7月5日10:17:49 PM org.glassfish.jersey.message.internal.writeringterceptorexecutor$terminalwriteringterceptor aroundWriteTo 严重:找不到媒体类型=应用程序/json、类型=class cd.orbit.server.User、genericType=class cd.orbit.server.User的MessageBodyWriter

这让我想到,不知何故,没有找到将我的用户对象转换为Json的库/方法,但是我有以下gradle构建文件(请注意jackson依赖项):

顺便说一句,
User
类使用了所有正确的注释


为什么运行Jersey的我的服务器(Google App Engine)不返回JSON格式的项目?

您需要将依赖项添加到Jersey的具体JSON提供程序中。要使用Jackson作为JSON提供程序,您需要添加jersey media JSON Jackson模块

然后,您需要注册
JacksonFeature
,如下所示

final Application application = new ResourceConfig()
    .packages("your.packages.to.scan")
    .register(JacksonFeature.class)
    // rest omitted
检查您是否具有jersey media jackson模块所需的所有其他依赖项


最后,您可以找到更多详细信息。

我已经有了JSON提供程序依赖项(请参阅我的文章)。我现在尝试注册JacksonFeature,如您上面所示。我将代码放在newUser()方法中,并将包更改为我的。但这并没有解决我的问题,什么都没有改变。我是否忽略了什么?我在您的依赖项列表中看不到
jersey media json jackson
。必须在web应用程序
web.xml
部署描述符中注册
应用程序。有关使用基于Servlet的环境的详细信息,请参见。啊,我明白了,我在谷歌上搜索了特定的依赖项并添加了它。我只是在第一个依赖项部分中查看并添加了所有依赖项。既然这不是我必须做的全部,我怎么知道我必须添加哪些依赖项(通常)?换句话说,您如何知道必须添加依赖关系?谢谢通常,项目文档中会列出所需的依赖项。对于Jersey,您可以找到所有可用的模块。无论如何,如果答案帮助您解决了问题,请将其标记为已接受,以便其他人可以重用该解决方案。
final Application application = new ResourceConfig()
    .packages("your.packages.to.scan")
    .register(JacksonFeature.class)
    // rest omitted