【发布时间】:2017-10-18 05:08:37
【问题描述】:
我使用 Spring boot 使用以下依赖项创建了一项服务
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.2.RELEASE</version>
</parent>
现在在我的控制器类中,我编写了以下内容:
@RestController
@RequestMapping("/abc")
public class WebController {
@RequestMapping(value = "/test/{value}", method = RequestMethod.GET, produces = {"application/json", "application/xml" })
public ResponseEntity<Ack> getTest(@PathVariable("value") String value) {
Ack ack = new Ack();
ack.setResponse(value);
ack.setStatus(HttpStatus.OK.value());
return new ResponseEntity<Ack>(ack, HttpStatus.OK);
}
}
Ack 是 POJO,它具有每个属性的 setter 和 getter。
当我在 Windows 机器上运行它时,我会以 json 和 XML 格式输出。但是在 Mac 中,当使用邮递员时,我使用 URL:http://IP:8443/abc/test/123 访问服务并提供接受作为应用程序/xml,我得到 XML 格式的输出。当我使用 application/json 时,我收到如下错误:
org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation
at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:260)
at org.springframework.web.servlet.mvc.method.annotation.HttpEntityMethodProcessor.handleReturnValue(HttpEntityMethodProcessor.java:203)
at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:81)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:132)
at org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver.doResolveHandlerMethodException(ExceptionHandlerExceptionResolver.java:381)
at org.springframework.web.servlet.handler.AbstractHandlerMethodExceptionResolver.doResolveException(AbstractHandlerMethodExceptionResolver.java:59)
at org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver.resolveException(AbstractHandlerExceptionResolver.java:136)
不知道出了什么问题。请提出建议。
【问题讨论】:
-
你的类路径中可能没有杰克逊。杰克逊将您的 pojo 转换为 json,我相信这是丢失的。因此这个例外。将杰克逊添加到您的 pom 中
-
jackson-mapper-asl-1.9.10.jar 和 jackson-core-asl-a.9.10.jar 在类路径中。在 Windows 中它工作正常。但在 mac 中,它能够在 xml 中生成输出,但在 json 中显示上述错误
标签: json spring web-services spring-boot jackson