嵌套异常是com.fasterxml.jackson.databind.exc.MismatchedInputException:无法构造com.xyz.pqr.model.Date`

时间:2018-12-18 01:29:50

标签: java xml rest jackson jaxb

错误:

我使用JAXB从XSD生成了Java POJO。现在,我正在尝试使用XML有效负载。但是我遇到了以下问题:

  

“错误请求”,“消息”:“ JSON解析错误:无法构造com.xyz.pqr.model.Date的实例(尽管至少存在一个Creator):没有用于从字符串值反序列化的字符串参数构造函数/工厂方法(' 2012年1月1日');嵌套的异常是com.fasterxml.jackson.databind.exc.MismatchedInputException:无法构造com.xyz.pqr.model.Date的实例(尽管至少存在一个Creator):没有字符串参数构造函数/工厂方法可用于从[来源:(PushbackInputStream);行:1,列:3419]处的字符串值('01 / 01/2012')\ n反序列化(通过引用链:com.xyz.pqr.model.DATA [\“ residentAddress \ “]-> com.xyz.pqr.model.Address [\” fromDate \“])”“,”路径“:” / receiveXML“}。

控制器:

    @PostMapping(path="/receiveXML", consumes="application/xml")
    public String receiveXml(@RequestBody DATA xml) {

        return "XML Received";
    }

卷曲:

curl -X POST --header "Content-Type:application/xml;charset=UTF-8" --data @soap_get.xml http://localhost:8080/receiveXML

有人能指出我正确的方向吗?我是否需要某种绑定文件才能将字符串解析为Date?

杰克逊依赖项:

<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-parameter-names</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jdk8</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>

DATA中的地址字段 @XMLRootElement 公共类DATA

受保护的地址residentAddress; -这个没有注释

地址类中的日期:  @XmlElement(必填= true)     受保护的日期fromDate;

XSD:

<xs:complexType name="address">
 \\
 \\
   <xs:element name="fromDate" type="date"/>
\\
\\
<xs:complexType name="address">


<xs:complexType name="date">
<xs:simpleContent>
<xs:extension base="dateBase">
<xs:attribute name="formatString">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="shortDate">
<xs:annotation>
<xs:documentation>equivalent of MM/dd/yyyy</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="MM/dd/yyyy"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>

1 个答案:

答案 0 :(得分:0)

通过摆脱我上面提到的所有jackson依赖关系来解决此问题。