Annotation Type JsonSerializeAs


  • @Target({ANNOTATION_TYPE,METHOD,FIELD,TYPE,PARAMETER})
    @Retention(RUNTIME)
    public @interface JsonSerializeAs
    Annotation to indicate override of intended serialization type; a more generic type (super-type) than declared one. Can be used on types (Classes) or on properties (property accessors like "getters", "setters" and constructor parameters). Overrides can apply to:
    • value itself (for all types and properties)
    • content of structured types (array and Collection elements; Map values)
    • keys of Maps

    To indicate that no override is to be used, Void.class is used as the marker (will use declared type) -- this is necessary as Annotation properties cannot have null values.

    Example usage:

     public class POJO {
       // ValueImpl extends GenericValue
       @JsonSerializeAs(GenericValue.class)
       public ValueImpl value;
    
       @JsonSerializeAs(keys = GenericKey.class, content = GenericValue.class)
       public Map<KeyImpl, ValueImpl> props;
     }
    
    • Optional Element Summary

      Optional Elements 
      Modifier and Type Optional Element Description
      java.lang.Class<?> content
      Type to serialize content entries (array and Collection elements, Map values) as, instead of type declared.
      java.lang.Class<?> key
      Type to serialize Map keys as, instead of type declared.
      java.lang.Class<?> value
      Type to serialize values as, instead of type declared.
    • Element Detail

      • value

        java.lang.Class<?> value
        Type to serialize values as, instead of type declared. Must be a super-type of declared type (or type itself); otherwise an exception may be thrown by serializer.

        Bogus type Void is used to indicate that declared type is used as-is (i.e. this annotation property has no setting).

        Default:
        java.lang.Void.class
      • content

        java.lang.Class<?> content
        Type to serialize content entries (array and Collection elements, Map values) as, instead of type declared. Must be a super-type of declared type (or type itself); otherwise an exception may be thrown by serializer.

        Bogus type Void is used to indicate that declared type is used as-is (i.e. this annotation property has no setting).

        Default:
        java.lang.Void.class
      • key

        java.lang.Class<?> key
        Type to serialize Map keys as, instead of type declared. Must be a super-type of declared type (or type itself); otherwise an exception may be thrown by serializer.

        Bogus type Void is used to indicate that declared type is used as-is (i.e. this annotation property has no setting).

        Default:
        java.lang.Void.class