0

1-有没有办法将反序列化器添加到模块或被ObjectMapper拾取以反序列化具有特定名称或正则表达式模式的所有字段?(例如,与模式匹配的所有字段.*url.*

2-还可以注册一个反序列化器,用于反序列化所有具有与特定正则表达式模式匹配的值的字段?(例如http://.+)。

3-或者是否有一个我可以在一个类上使用的注释,而不是用一个ObjectMapper可以用来代替 1 和 2 的注释来注册它?

4

2 回答 2

0

对于(1)和(2),没有。

对于 3,您可以覆盖指定的 Serializer 或 Deserializer 以用于属性,其中:

public class POJO {
  @JsonSerialize(using=MySerializer.class)
  public String text;
}

您可以为 (1) 做的只是为 注册一个自定义序列化程序String.class,并将其定义为ContextualSerializer. 当它的createContextual()方法被调用时,你可以检查它用于哪个属性;如果名称与您的正则表达式匹配,您可以构造替代字符串序列化程序;如果没有,那么简单的只是调用JsonGenerator.writeString().

对于 (2),您只需定义自定义字符串序列化程序并在序列化期间比较值,采取适当的措施。

于 2012-11-14T01:08:59.927 回答
0

您可以注册一个 bean 序列化定制器来检查 bean 的属性,应用您的正则表达式,并根据需要安装您的定制序列化器。

引用大图的话:

扩展点是添加一个 BeanSerializerModifier,您可以通过 Module 实现来完成。SimpleModule 没有为此添加便捷方法,因此您需要实现 Module#setupModule(),调用 'addBeanSerializerModifier'。

反序列化端有一个并行结构。

于 2012-11-13T23:20:09.070 回答