【发布时间】:2017-06-24 09:48:39
【问题描述】:
我有一个具有以下提到合同的控制器 ---
@RequestMapping(value="/api/devices/certs",method = RequestMethod.POST,consumes={"application/json","application/xml"})
public String submitCertificate(@RequestBody Certificate certificate){
System.out.println(certificate.getBase64String());
return certificate.getBase64String();
}
除此之外还有两个 pojo 类 --
1)
public class DeviceCertificateRequest implements Serializable {
private static final long serialVersionUID = -4408117936126030294L;
private Certificate certificate;
public Certificate getCertificate() {
return certificate;
}
public void setCertificate(Certificate certificate) {
this.certificate = certificate;
}
@Override
public String toString() {
return "DeviceCertifficateRequest [certificate=" + certificate + "]";
}
}
2)
public class Certificate implements Serializable {
private static final long serialVersionUID = 4044105355620137636L;
private String base64String;
public String getBase64String() {
return base64String;
}
public void setBase64String(String base64String) {
this.base64String = base64String;
}
@Override
public String toString() {
return "Certificate [base64String=" + base64String + "]";
}
}
现在我正在使用 spring boot 并为内容协商添加了 jackson-data-bind 依赖项,我还想同时使用 json 和 xml 数据作为输入,从而将其映射到 POJO 文件。
但我无法达到预期的结果,即使我在尝试从休息客户端发送 json 时在日志中遇到以下提到的错误。
错误----
ERROR] 2017-02-07 13:48:45.448 [http-nio-8080-exec-1] ConfigManagerExceptionHandler - exception while accessing url:-http://localhost:8080/api/devices/certserror message:-Could not read document: Can not construct instance of com.lufthansa.configmanager.request.beans.Certificate: no String-argument constructor/factory method to deserialize from String value ('DeviceCertificateRequest')
at [Source: java.io.PushbackInputStream@3c891128; line: 1, column: 1]; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Can not construct instance of com.lufthansa.configmanager.request.beans.Certificate: no String-argument constructor/factory method to deserialize from String value ('DeviceCertificateRequest')
at [Source: java.io.PushbackInputStream@3c891128; line: 1, column: 1]
Json 发送过去--
"certificate": {
"base64String": "abc"
}
请让我知道它是否也适用于 xml 有效负载,因为我想同时使用 xml 和 json 输入
【问题讨论】:
标签: json xml rest spring-boot