Json 如何在jersey中的rest上发送对象作为响应
我有一个ResponseModel类,我想把它的对象发送给rest。但我得到了这个错误: Java类的消息体编写器 com.tcs.srl.message.model.ResponseModel和Java类型类 com.tcs.srl.message.model.ResponseModel和MIME媒体类型 找不到application/json 我不能在我的项目中使用Maven,所以不能在pom.xml中添加jersey依赖项Json 如何在jersey中的rest上发送对象作为响应,json,web-services,rest,jersey-1.0,Json,Web Services,Rest,Jersey 1.0,我有一个ResponseModel类,我想把它的对象发送给rest。但我得到了这个错误: Java类的消息体编写器 com.tcs.srl.message.model.ResponseModel和Java类型类 com.tcs.srl.message.model.ResponseModel和MIME媒体类型 找不到application/json 我不能在我的项目中使用Maven,所以不能在pom.xml中添加jersey依赖项 import java.io.File; import java
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.*;
import javax.ws.rs.core.Response.ResponseBuilder;
import javax.xml.bind.annotation.XmlRootElement;
/*import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;*/
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.tcs.DataShare.Client.DataShareServiceClient;
import com.tcs.DataShare.Client.GetFilesOnLocal;
import com.tcs.DataShare.Constants.DataShareConstants;
import com.tcs.srl.message.model.ResponseModel;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
@Path("/ConfigureAndrew")
@XmlRootElement
public class ConfigureAndrew {
private static final Logger LOGGER = LoggerFactory
.getLogger(ConfigureAndrew.class);
private ClientResponse response;
@Path("/configureAndrew")
@POST
@Produces(MediaType.APPLICATION_JSON)
public ResponseModel configureAndrew(@Context HttpServletRequest requestObj,
String serviceData) {
LOGGER.debug("Inside Configure Andrew web service: ");
JSONParser parser = new JSONParser();
String isSuccess = "false";
ResponseModel result=null;
try {
result = new ResponseModel();
String headerString = requestObj.getHeader("header");
JSONObject serviceJSON = (JSONObject) parser.parse(serviceData);
String datashareURL = (String) serviceJSON
.get(DataShareConstants.DATASHARE_URL);
String datasharePort = (String) serviceJSON
.get(DataShareConstants.DATASHARE_PORT);
System.out.println("datasharePort: " + datasharePort);
String servicename = (String) serviceJSON
.get(DataShareConstants.SERVICE_NAME);
String appname = (String) serviceJSON
.get(DataShareConstants.APP_NAME);
String version = (String) serviceJSON
.get(DataShareConstants.APP_VERSION);
String path = (String) serviceJSON.get(DataShareConstants.APP_PATH);
DataShareServiceClient dataShareServiceClient = new DataShareServiceClient(
datashareURL, datasharePort, servicename);
InputStream inputStream = dataShareServiceClient
.zipFolderWithSubsequestFolder(path);
if (inputStream.available() != 0) {
System.out.println("In the input stream");
GetFilesOnLocal getFilesOnLocal = new GetFilesOnLocal();
result = getFilesOnLocal.getFiles(inputStream, result);
LOGGER.debug("Input stream contains data");
} else {
LOGGER.error("Input stream is empty");
}
LOGGER.debug("DatashareServices :completed configure Andrew");
isSuccess = "true";
result.setSuccess("true");
result.setErrors(null);
result.setData("data is to be added");
} catch (Exception e) {
e.printStackTrace();
LOGGER.error("DatashareServices :configureAndrew service failed "
+ e);
isSuccess = "false";
result.getErrors().add("Error in configureAndrew method");
}
System.out.println("result is"+result.getSuccess());
JSONObject res=new JSONObject();
return result;
}
}
响应模式POJO类
package com.tcs.ngps.sip.model;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class ResponseModel implements Serializable{
String success;
List errors;
public String getSuccess() {
return success;
}
public void setSuccess(String success) {
this.success = success;
}
public List getErrors() {
return errors;
}
public void setErrors(List errors) {
this.errors = errors;
}
public List getWarnings() {
return warnings;
}
public void setWarnings(List warnings) {
this.warnings = warnings;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
List warnings;
Object data;
String transactionId;
public String getTransactionId() {
return transactionId;
}
public void setTransactionId(String transactionId) {
this.transactionId = transactionId;
}
public ResponseModel(){
this.errors = new ArrayList<>();
this.warnings = new ArrayList<>();
this.data = new HashMap<>();
}
public ResponseModel(String success, List errors, List warnings,
HashMap data,String transactionId) {
super();
this.success = success;
this.errors = errors;
this.warnings = warnings;
this.data = data;
this.transactionId=transactionId;
}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>DataShareWebService</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.tcs.DataShare.WebService</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
检查是否已在Jersery功能的类路径中包含所有必需的依赖项。我认为您没有包括杰克逊的功能:
检查是否在类路径中添加了jersey media json jackson-.jar。我的项目中没有maven。那么我可以添加pom.xml吗???我已经用ANT构建了我的项目。@SonalRuhatiya对不起,我误解了你的问题。修改了我的答案。在我的Web INF->lib文件夹1asm-3.3.1.jar 2jersey-bundle-1.14.jar 3jersey-client-1.17.jar 4json-simple-1.1.1.jar 5logback-access-1.0.9.jar 6logback-classic-1.0.13.jar 7logback-core-1.0.13.jar 8servlet-api.jar 9slf4j-api-1.7.2.jar 10slf4j-ext-1.6.1.1.jar中,我添加了项目构建路径中的1 jackson-core-asl-1.9.2.jar 2 jackson-mapper-asl-1.9.2.jar。但它仍然不起作用。这是同样的例外…这是我在回答中写的。为所需版本添加jersey-media-json-jackson.jar。将jersey-media-json-jackson.jar添加到类路径中,但仍然不起作用