0

Jackson ObjectMapper.readValue(String,Class) APIを使用して文字列を列挙型オブジェクトにマップしようとしていますが、問題は、json文字列に以下のようにアクション列挙型のタスクオブジェクトが含まれているとしましょう

public enum アクション {

@XmlEnumValue("Add")
ADD("Add"),
@XmlEnumValue("Amend")
AMEND("Amend"),
@XmlEnumValue("Delete")
DELETE("Delete"),
@XmlEnumValue("Pending")
PENDING("Pending");
private final String value;

Action(String v) {
    value = v;
}

public String value() {
    return value;
}

public static Action fromValue(String v) {
    for (Action c: Action.values()) {
        if (c.value.equals(v)) {
            return c;
        }
    }
    throw new IllegalArgumentException(v);
}

}

ジェイソン文字列は次のようになります "{"action":"Add"}" その後、 ObjectMapper.readValue(jsonString, Task.Class) がスローされます

org.codehaus.jackson.map.deser.StdDeserializationContext.weirdStringException(StdDeserializationContext.java:243) for Action Add は、この Enum を変換できないためです。

カスタムDeserializerを追加しようとしましたが、とにかくEnumDeserializerが呼び出されます。何か案は?

すべてのオブジェクトは JAXB で生成されるため、アノテーションはできません。

助けてくれてありがとう

4

1 に答える 1