我试图让Jersey在我返回对象时序列化它们,就像这样:
@POST
@Path("/new")
@Consumes(MediaType.TEXT_PLAIN)
@Produces(MediaType.APPLICATION_JSON)
public User newUser(String username) {
return new User(username);
}
当我用例如“john”对此执行POST请求时,它应该用User
的json表示来响应。但是,它所做的只是给出错误状态500,服务器记录以下内容
全局阅读器拦截器:org.glassfish.jersey.server.internal。MappableExceptionWrapperInterceptor是全局编写器拦截器:org.glassfish.jersey.server.internal。MappableExceptionWrapperInterceptor org.glassfish.jersey.server.internal。JsonWithPaddingInterceptor名称:carl returning:cd.orbit.server.User@4c84f5102014年7月5日晚上10:17:49 org.glassfish.jersey.message.internal。WriterInterceptorExecutor$TerminalWriterInterceptor aroundWriteTo严重:找不到媒体类型=application/json,类型=class cd.orbit.server的MessageBodyWriter。对于用户,genericType=class cd.orbit.server.User。
这让我觉得,不知怎么的,没有找到将我的用户对象转换为Json的库/方法,但我有以下gradle构建文件(请注意jackson依赖关系):
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.google.appengine:gradle-appengine-plugin:1.9.6'
}
}
apply plugin: 'war'
apply plugin: 'appengine'
sourceCompatibility = 1.7
version = '1.0'
repositories {
mavenCentral()
}
dependencies {
providedCompile 'javax.servlet:servlet-api:2.5'
compile 'com.google.appengine:appengine-api-1.0-sdk:1.9.6'
testCompile group: 'junit', name: 'junit', version: '4.11'
compile 'org.glassfish.jersey.core:jersey-client:2.10.1'
compile 'org.glassfish.jersey.core:jersey-server:2.10.1'
compile 'org.glassfish.jersey.core:jersey-common:2.10.1'
compile 'org.glassfish.jersey.containers:jersey-container-servlet-core:2.10'
compile 'com.fasterxml.jackson.core:jackson-annotations:2.3.2'
compile 'com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:2.3.2'
compile 'com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:2.3.2'
compile 'com.badlogicgames.gdx:gdx:1.0.0'
}
appengine {
httpPort = 8085
appcfg {
email = 'aaaaa'
passIn = true
app {
id = 'aaaaa'
}
}
}
task copyDeps(type: Copy) {
from configurations.runtime
into "${rootDir}/war/WEB-INF/lib"
}
顺便说一下,< code>User类使用所有正确的注释。
您需要将依赖项添加到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模块所需的所有其他依赖项。
最后,你可以在这里找到更多的细节。
问题内容: 我意识到这有点不稳定,但是我想使用Jersey客户端使用Java序列化作为“编组” 将Spring Integration发送到Jersey服务器。是否对此具有内置或贡献支持,还是我必须编写自己的MessageBodyReader / Writer?我试图在客户端请求的类型设置到两个“应用程序/ x-java的序列化对象”,并和它只是提供了常用的: 谷歌和泽西岛用户指南都对这一主题感到
问题内容: 我有一个使用Jersey实现的JAX-RS REST服务。JAX-RS / Jersey的很酷的功能之一是,只需添加一些Java批注,就可以将POJO轻松转换为REST服务…包括使用JAXB批注将POJO转换为JSON的简单方法。 现在,我希望能够将这个酷炫的JSON修饰功能用于非REST用途-我很希望能够将其中一些对象序列化为JSON文本到磁盘。这是我要序列化的示例JAXB对象: J
问题内容: 简而言之,这是我想在JAVA中解析的JSON对象的草图: 这些是我为解析而创建的 POJO (为简洁起见,我将省略这些语句): (1)完整的JSON对象的表示形式 (2)嵌套对象的表示: (3)项目的表示: 现在,创建一个Gson实例(用于导入), 每当我尝试访问可解析对象时(例如通过),都会收到一个。但是,Gson 确实 创建了我指定的类的对象,并且 不会 引发任何后续错误。 我知道
问题内容: 我有此JSON,但无法弄清楚如何将其转换为C#中的对象列表。 这是JSON: 我尝试使用的代码: 无济于事。如何使用Newtonsoft的JSON库(Json.Net)将JSON反序列化为这些对象的列表? 问题答案: 您可以使用
问题内容: 我正在尝试使Django函数进行JSON序列化并将其返回到对象中。 我正在这样使用它: 但是我得到这个错误: 有任何想法吗? 编辑:这是回溯: http://dpaste.com/38786/ 问题答案: 更新:Python现在拥有自己的json处理程序,只需使用即可代替。 Django序列化器模块旨在序列化Django ORM对象。如果要对常规Python字典进行编码,则应使用sim
问题内容: 我是C ++的新手。使用序列化和反序列化类型数据的最简单方法是什么。我发现了一些使用示例,但它们对我来说是晦涩的。 问题答案: 请注意,将键解释为路径,例如,将对“ ab” =“ z”放置将创建{“ a”:{“ b”:“ z”}} JSON,而不是{“ ab”:“ z”} 。否则,使用是微不足道的。这是一个小例子。