-
-
Notifications
You must be signed in to change notification settings - Fork 233
Closed
Labels
2.18Issues planned at earliest for 2.18Issues planned at earliest for 2.18
Milestone
Description
Hello,
I'm trying to serialize an Enum type to XML, then read it back, but I get an input mismatch error related to JsonCreator.
Could someone provide insights into why deserialization fails?
Any help would is appreciated. Thank you.
Error
com.fasterxml.jackson.databind.exc.MismatchedInputException: Input mismatch reading Enum `com.xxx.yyy.Country`: properties-based `@JsonCreator` ([method com.xxx.yyy.Country#fromValue(java.lang.String)]) expects String Value, got Object value (`JsonToken.START_OBJECT`)Test
@Test
void aTest() throws JsonProcessingException {
XmlMapper xmlMapper = new XmlMapper();
String s = xmlMapper.writeValueAsString(Country.ITALY);
assertThat(s).isEqualTo("<Country>Italy</Country>");
Country country = xmlMapper.readValue(s, Country.class);
assertThat(country).isEqualTo(Country.ITALY); // fails with the error reported above
}Country.java
public enum Country {
ITALY("Italy"),
NETHERLANDS("Netherlands");
private String value;
Country(String value) {
this.value = value;
}
@JsonValue
public String getValue() {
return value;
}
@Override
public String toString() {
return String.valueOf(value);
}
@JsonCreator(mode = JsonCreator.Mode.DELEGATING)
public static Country fromValue(String value) {
for (Country b : Country.values()) {
if (b.value.equals(value)) {
return b;
}
}
throw new IllegalArgumentException("Unexpected value '" + value + "'");
}
}library: com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.17.1
original report submitted here: https://groups.google.com/g/jackson-user/c/xXgyb_uKbGg/m/fCcNz9WOCAAJ
Metadata
Metadata
Assignees
Labels
2.18Issues planned at earliest for 2.18Issues planned at earliest for 2.18