0
私は単純なクラスを持ち、フィールドid
にはカスタムデシリアライザが付いています。WebsphereでJsonカスタムデシリアライザが呼び出されていない
public class TestRequest implements Serializable {
@NotNull
@Pattern(regexp = "^[a-zA-Z0-9=+]*$")
@JsonDeserialize(using = StringDeserializer.class)
@JsonProperty
private String id;
//getter
//setter
}
とカスタムデシリアライザクラス:
public class StringDeserializer extends JsonDeserializer<String> {
@Override
public String deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) {
Iterator<String> iterator = jsonParser.readValuesAs(String.class);
String id = iterator.next();
return id + "0000";
}
}
私はジャージーRESTテストをしてテストする場合、deserilizerが呼び出され、期待通りに動作します。しかしwebsphereでは呼び出されません。なぜその呼び出されていないか考えてみましょう。 私はあなたがそうでない場合はJAX-RSランタイムはprovdierとしてクラスを認識しません、あなたのStringDeserializer
クラスに@Provider
注釈を追加する必要がありjaxrs 1.1