Hello,
I’m trying to serialize an Enum value to XML, then read it back, but I get 
an input mismatch error related to JsonCreator.
It seems the factory method was defined correctly, e.g., factory method 
annotated with JsonCreator and argument without JsonProperty. 

Could someone provide insights into why deserialization fails? 
Any help would is appreciated. Thank you.

Error
```java
    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
```java
@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);
}
```

Country.java
```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 + 
"'");
    }
}
```

-- 
You received this message because you are subscribed to the Google Groups 
"jackson-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/jackson-user/439271ea-1295-42fd-ac25-e1f363d1f5a0n%40googlegroups.com.

Reply via email to