MismatchedInputException:无法从 START_OBJECT 令牌中反序列化 `java.lang.Integer` 的实例
MismatchedInputException: Cannot deserialize instance of `java.lang.Integer` out of START_OBJECT token
我正在尝试使用 XMLMapper
将 XML 反序列化为 Java 对象,但我正面临 MistmactchInputException
。
XML:
<author>
<id type="integer">1234</id>
<name>Hello World</name>
</author>
Java Class:
public class MyObject {
@JacksonXmlProperty(localName = "id")
private Integer id;
@JacksonXmlProperty(localName = "name")
private String name;
// Constructor, Getter, Setter
}
问题出在 id
xml 标记中,其中提到了 type="integer"
。如果我删除 type="integer"
它工作得很好。
只需使用 @JacksonXmlRootElement
注释,例如:
@JacksonXmlRootElement(localName = "id")
@Data //for getters and setters
public class Id {
@JacksonXmlProperty(isAttribute=true)
String type;
@JacksonXmlText
String text;
}
你的class应该是这样的:
public class MyObject {
@JacksonXmlProperty(localName = "id")
private Id id;
@JacksonXmlProperty(localName = "name")
private String name;
// Constructor, Getter, Setter
}
我正在尝试使用 XMLMapper
将 XML 反序列化为 Java 对象,但我正面临 MistmactchInputException
。
XML:
<author>
<id type="integer">1234</id>
<name>Hello World</name>
</author>
Java Class:
public class MyObject {
@JacksonXmlProperty(localName = "id")
private Integer id;
@JacksonXmlProperty(localName = "name")
private String name;
// Constructor, Getter, Setter
}
问题出在 id
xml 标记中,其中提到了 type="integer"
。如果我删除 type="integer"
它工作得很好。
只需使用 @JacksonXmlRootElement
注释,例如:
@JacksonXmlRootElement(localName = "id")
@Data //for getters and setters
public class Id {
@JacksonXmlProperty(isAttribute=true)
String type;
@JacksonXmlText
String text;
}
你的class应该是这样的:
public class MyObject {
@JacksonXmlProperty(localName = "id")
private Id id;
@JacksonXmlProperty(localName = "name")
private String name;
// Constructor, Getter, Setter
}