我試圖讓澤西連載我的對象,每當我回他們,就像這樣:我如何使用Jersey序列化爲Json? (我使用的搖籃)
@POST
@Path("/new")
@Consumes(MediaType.TEXT_PLAIN)
@Produces(MediaType.APPLICATION_JSON)
public User newUser(String username) {
return new User(username);
}
當我做一個POST請求,這跟例如「約翰」,它應該響應一個User
的json表示。然而,它的作用是給一個錯誤狀態500,服務器記錄以下
全球讀者攔截器: org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor 全球作家攔截器: org.glassfish。 jersey.server.internal.MappableExceptionWrapperInterceptor org.glassfish.jersey.server.internal.JsonWithPaddingInterceptor 名字:卡爾 返回:[email protected] 2014年7月5日下午10時十七分49秒org.glassfish。 jersey.message.internal.WriterInterceptorExecutor $ TerminalWriterInterceptor aroundWriteTo SEVERE:MessageBodyWriter not f ound for media type = application/json,type = class cd.orbit.server.User,genericType = class cd.orbit.server.User。
這讓我覺得莫名其妙地有發現,把我的用戶對象轉換爲JSON沒有圖書館/方法,但是我有以下gradle這個build文件(注意傑克遜依賴):
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"
}
者均基於User
類使用所有正確的註釋。
爲什麼我的運行Jersey的服務器(Google App Engine)不能以JSON格式返回項目?
我已經有JSON提供程序依賴關係(請參閱我的文章)。如上所示,我現在試着註冊JacksonFeature。我把代碼放在我的newUser()方法中,並將包更改爲我的。然而,這並沒有解決我的問題,沒有任何改變。我可以忽略一些東西嗎 – user717572
我在依賴列表中看不到'jersey-media-json-jackson'。 'application'必須在您的web應用程序'web.xml'部署描述符中註冊。有關詳細信息,請參閱[此處](https://jersey.java.net/documentation/latest/deployment.html#deployment.servlet),前提是您使用基於Servlet的環境。 – pgiecek
Aaah我看到了,我使用了特定的依賴關係並添加了它。我只查看https://jersey.java.net/project-info/2.10.1/jersey/project/jersey-media-moxy/dependencies.html並在第一個依賴項部分添加了所有依賴項。既然這不是我所要做的,那我怎麼知道我必須添加哪些依賴關係(一般情況下)?換句話說,你是怎麼知道這個依賴項必須被添加的?謝謝! – user717572