我想創建一個使用澤西非常簡單的REST服務。下面是服務代碼MessageBodyWriter找不到媒體類型=應用程序/ JSON時返回JSON在REST Web服務與澤西島
@Path("/UserService")
public class UserService {
@GET
@Path("/users")
@Produces(MediaType.APPLICATION_XML)
public List<User> getUsers() {
User user = new User(1, "Thomas", "Greene");
List<User> userList = new ArrayList<User>();
userList.add(user);
return userList;
}
}
當我通過郵路運行它,它返回我的XML響應
現在,我希望得到一個JSON響應返回。所以,我改變了介質類型來application/json
:
@Path("/UserService")
public class UserService {
@GET
@Path("/users")
@Produces(MediaType.APPLICATION_JSON)
public List<User> getUsers(){
User user = new User(1, "Thomas", "Greene");
List<User> userList = new ArrayList<User>();
userList.add(user);
return userList;
}
}
它給了我在Tomcat的日誌下面的錯誤:
重度:MessageBodyWriter找不到媒體類型=應用程序/ JSON,類型=級Java。 util.ArrayList,genericType = java.util.List。
有人可以請指導我如何獲得JSON響應嗎?
我沒有使用maven。我剛剛使用eclispe創建了一個'動態Web項目'。這給了我一個WEB-INF/lib目錄。我在lib目錄中添加了'com.fasterxml.jackson.core.jar','com.fasterxml.jackson.databind.jar'和'jackson-annotations-2.1.2.jar'。最後,我只是將這個項目導出爲戰爭並在Tomcat中部署。 所以,我既沒有pom.xml,也沒有找到Application/ResourceConfig。不會將這3個罐子添加到WEB-INF/lib中就足夠了嗎? – kayasa
@kayasa您可以手動添加依賴關係(查看依賴關係將需要[這裏](http://mvnrepository.com/artifact/org.glassfish.jersey.media/jersey-media-json-jackson/2.22)。 2))。但我建議你現在使用Maven。說真的,*沒有理由手動管理你的依賴關係。要將現有項目轉換爲Maven項目,請查看[這裏](http://stackoverflow.com/q/2449461/1426227)。 –
感謝您的建議。我同意使用Maven是個好主意。但是,我對澤西和Maven都是新手,所以一次只想做一件事。在選擇Maven之前,我希望獲得'Hello World'REST示例。 – kayasa