Json 如何在jersey中的rest上发送对象作为响应

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

我有一个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.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添加到类路径中,但仍然不起作用