在我的REST應用程序(GlassFish 4.1.2下)中,我想將POJO轉換爲JSON並返回。這些例子都讓它看起來很簡單,但我錯過了一些東西。MOXyJsonProvider無法正常工作
這裏是我的應用程序:
@ApplicationPath("/")
public class RootApp extends Application {
@Override
public Set<Class<?>> getClasses() {
HashSet set = new HashSet<Class<?>>();
set.add(HelloWorld.class);
return set;
}
@Override
public Set<Object> getSingletons() {
HashSet set = new HashSet<Object>();
MOXyJsonProvider moxyJsonProvider = new MOXyJsonProvider();
moxyJsonProvider.setFormattedOutput(true);
set.add(moxyJsonProvider);
return set;
}
}
這裏是資源:
@Path("helloworld")
public class HelloWorld {
private static int counter = 1;
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getInevitableMessage() {
JsonHello hj = new JsonHello("Hello World", counter++);
return Response.ok(hj).build();
}
}
而且最後也是最不重要的是轉換爲從JSON的POJO:
public class JsonHello {
private int count;
private String message;
public JsonHello(String message, int count) {
this.message = message;
this.count = count;
}
public int count() { return count; }
public void count(int value) { count = value; }
public String message() { return message; }
public void message(String value) { message = value; }
}
我指的是thread中的標記答案。當我試圖訪問「/ HelloWorld」的它間距以下異常:
org.glassfish.jersey.server.ContainerException: java.lang.NoClassDefFoundError: Could not initialize class org.eclipse.persistence.jaxb.BeanValidationHelper
此應用程序,如果資源只是返回一個字符串。 web.xml文件中沒有任何內容,因爲我讓Glassfish通過它的裝飾器設置應用程序。
任何想法我在這裏失蹤?
你是如何處理依賴關係的? Maven的?如果是這樣,你使用什麼依賴關係?手動添加罐子?如果是這樣,你使用什麼罐子?你使用什麼版本?你使用的是什麼版本的Glassfish?請回答以上每個問題,並編輯您的帖子(不在評論中) –
@peeskillet該項目由Idea 2017.1生成,並使用GlassFish 4.1.2。它使用IDE的構建系統 - 不是Ant或Maven。這些庫是手動導入的,我使用的是Jackson 2.8.4。我不知道如何告訴IDE一個庫是「提供的」(即已經是GlassFish的一部分),而不是與應用程序打包在一起,這可能是一個問題。 – AlanObject
如果您使用的是傑克遜,那麼您爲什麼要註冊MOXY? –