首页 文章

jackson - 从GET Api返回JSON POJO时找不到MessageBodyWriter

提问于
浏览
0

我试图使用 Jackson 返回一个简单的json响应 .

@GET
    @Produces(MediaType.APPLICATION_JSON)
    public FMSResponseInfo test(){
        System.out.println("Entered the function");
        FMSResponseInfo fmsResponseInfo = new FMSResponseInfo();
        List<SearchDetailsDTO> searchDetailsDtoList = new ArrayList<>();
        for (int i = 0; i < 5; i++) {
            SearchDetailsDTO searchDetailsDto = new SearchDetailsDTO();
            searchDetailsDto.setBarcode("barcode" + i);
            searchDetailsDto.setDocNo("docNo" + i);
            searchDetailsDto.setDocType("docType" + i);
            searchDetailsDtoList.add(searchDetailsDto);
        }
        fmsResponseInfo.setStatus("200");
        fmsResponseInfo.setMessage("Success");
        fmsResponseInfo.setData(searchDetailsDtoList);
        System.out.println("Exiting the function");
        return fmsResponseInfo;
    }

这是代码 . 当函数尝试返回POJO的FMSResponseInfo时:

package com.fms.core;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({ "status", "message", "data" })
public class FMSResponseInfo {
    @JsonProperty("status")
    private String status;
    @JsonProperty("message")
    private String message;
    @JsonProperty("data")
    private Object data;
    //Getters and Setters
}

这是将被送回的pojo .

但是当函数尝试返回时,我得到了这个异常:

2015年5月14日上午9:54:57 org.glassfish.jersey.message.internal.WriterInterceptorExecutor $ TerminalWriterInterceptor aroundWriteTo SEVERE:找不到媒体类型= application / json的MessageBodyWriter,type = class com.fms.core.FMSResponseInfo,genericType = class com.fms.core.FMSResponseInfo .

我已经包含了jackson-annotation-2.4.2.jar,jackson-core-2.4.2.jar和jackson-databind-2.4.2.jar . 这些是我包括的三个 Jackson jar 以及球衣2.16和hibernate和mysql所需的其他 jar .

请帮我解决这个问题!!

1 回答

  • 1

    您需要的不仅仅是 Jackson ,还需要Jackson JAX-RS提供商 .

    enter image description here

    然后在web.xml中注册它

    <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>
            your.resource.provider.package,
            com.fasterxml.jackson.jaxrs.json
        </param-value>
    </init-param>
    

    或者在你的 ResourceConfig

    packages("your.resource.provider.packgae",
             "com.fasterxml.jackson.jaxrs.json");
    

相关问题