Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用请求正文调用post方法时出现JSON映射异常_Json_Xml_Rest_Spring Boot - Fatal编程技术网

使用请求正文调用post方法时出现JSON映射异常

使用请求正文调用post方法时出现JSON映射异常,json,xml,rest,spring-boot,Json,Xml,Rest,Spring Boot,我有一名控制员,合同如下--- 除此之外,还有两个pojo类-- (一) (二) 现在我正在使用SpringBoot,并为内容协商添加了jackson数据绑定依赖项,我还希望使用json和xml数据作为输入,从而将其映射到POJO文件 但我无法达到预期的结果,甚至在尝试从rest客户机跨json发送时,日志中出现了下面提到的错误 错误-- Json发送-- 还请让我知道它是否也适用于xml负载,因为我想使用xml和json输入 向我们展示如何发出请求并仔细检查变量名称 检查并重新检查控制器中是否

我有一名控制员,合同如下---

除此之外,还有两个pojo类--

(一)

(二)

现在我正在使用SpringBoot,并为内容协商添加了jackson数据绑定依赖项,我还希望使用json和xml数据作为输入,从而将其映射到POJO文件

但我无法达到预期的结果,甚至在尝试从rest客户机跨json发送时,日志中出现了下面提到的错误

错误--

Json发送--

还请让我知道它是否也适用于xml负载,因为我想使用xml和json输入

  • 向我们展示如何发出请求并仔细检查变量名称
  • 检查并重新检查控制器中是否有正确的导入,证书是否确实来自您的包而不是任何其他文件
  • 加 @JsonInclude(Include.NON_NULL) 类Foo{} 这样你就不会有零问题了
  • 删除以测试证书中的serialVersionUID
  • 尝试将@ResponseBody添加到您使用的控制器方法中
  • 设法发送

    { “base64String”:“abc” }


  • 没有变量名。

    我通过在POJO类中创建参数化构造函数来工作,似乎jackson data bind需要一个参数化构造函数来创建对象

    但是仍然需要检查xml输入。

    请参见此
      @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();
        }
    
    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 + "]";
        }
    
    }
    
    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 + "]";
        }
    
    }
    
    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]
    
        "certificate": {
        "base64String": "abc"
      }