在Websphere中没有调用Json自定义反序列化器

时间:2017-10-27 09:34:56

标签: rest jackson jax-rs websphere

我有简单的类,字段id使用自定义反序列化器进行注释。

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";     
    }
}

当我使用Jersey REST测试进行测试时,会调用deserilizer并按预期工作。但是使用websphere它没有调用。不知道为什么不叫它。 我正在使用jaxrs 1.1

1 个答案:

答案 0 :(得分:0)

您可能需要将@Provider注释添加到StringDeserializer类,否则JAX-RS运行时将无法将该类识别为前导。

即使你的类扩展JsonDeserializer<String>,它本身可能用@Provider注释,但JAX-RS运行时不会扫描库中的注释,因为这会对性能产生负面影响。