Jackson Annotations Source Code

Jackson is "the Java JSON library" or "the best JSON parser for Java". Or simply as "JSON for Java".

Jackson Annotations Source Code files are provided in the source packge (jackson-annotations-2.12.4-sources.jar). You can download it at Jackson Maven Website.

You can also browse Jackson Annotations Source Code below:

✍: FYIcenter.com

com/fasterxml/jackson/databind/annotation/JsonAppend.java

package com.fasterxml.jackson.databind.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.ser.VirtualBeanPropertyWriter;

/**
 * Annotation that may be used to add "virtual" properties to be written
 * after regular properties (although ordering may be changed using
 * both standard <code>@JsonPropertyOrder</code> annotation, and
 * properties of this annotation).
 * 
 * @since 2.5
 */
@Target({ElementType.ANNOTATION_TYPE, ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
@com.fasterxml.jackson.annotation.JacksonAnnotation
public @interface JsonAppend
{
    /**
     * Set of attribute-backed properties to include when serializing
     * a POJO.
     */
    public Attr[] attrs() default { };

    /**
     * Set of general virtual properties to include when serializing a POJO.
     */
    public Prop[] props() default { };

    /**
     * Indicator used to determine whether properties defined are to be
     * appended after (false) or prepended before (true) regular properties.
     * Affects all kinds of properties defined using this annotation.
     */
    public boolean prepend() default false;

    /**
     * Definition of a single attribute-backed property.
     * Attribute-backed properties will be appended after (or prepended before,
     * as per {@link #prepend}) regular properties
     * in specified order, although their placement may be further changed
     * by the usual property-ordering functionality (alphabetic sorting;
     * explicit ordering)
     */
    public @interface Attr
    {
        /**
         * Name of attribute of which value to serialize. Is also used as the
         * name of external property to write, unless overridden by
         * assigning a value for {@link #propName()}.
         */
        public String value();

        /**
         * Name to use for serializing value of the attribute; if not defined,
         * {@link #value} will be used instead.
         */
        public String propName() default "";

        /**
         * Optional namespace to use; only relevant for data formats that use
         * namespaces (like XML).
         */
        public String propNamespace() default "";

        /**
         * When to include attribute-property. Default value indicates that
         * property should only be written if specified attribute has a non-null
         * value.
         */
        public JsonInclude.Include include() default JsonInclude.Include.NON_NULL;

        /**
         * Metadata about property, similar to
         * {@link com.fasterxml.jackson.annotation.JsonProperty#required()}.
         */
        public boolean required() default false;
    }
    
    /**
     * Definition of a single general virtual property.
     */
    public @interface Prop
    {
        /**
         * Actual implementation class (a subtype of {@link VirtualBeanPropertyWriter})
         * of the property to instantiate (using the no-argument default constructor).
         */
        public Class<? extends VirtualBeanPropertyWriter> value();

        /**
         * Name of the property to possibly use for serializing (although implementation
         * may choose to not use this information).
         */
        public String name() default "";

        /**
         * Optional namespace to use along with {@link #name};
         * only relevant for data formats that use namespaces (like XML).
         */
        public String namespace() default "";

        /**
         * When to include  value of the property. Default value indicates that
         * property should only be written if specified attribute has a non-null
         * value. As with other properties, actual property implementation may or may
         * not choose to use this inclusion information.
         */
        public JsonInclude.Include include() default JsonInclude.Include.NON_NULL;

        /**
         * Metadata about property, similar to
         * {@link com.fasterxml.jackson.annotation.JsonProperty#required()}.
         */
        public boolean required() default false;

        /**
         * Nominal type of the property. Passed as type information for related
         * virtual objects, and may (or may not be) used by implementation
         * for choosing serializer to use.
         */
        public Class<?> type() default Object.class;
    }
}

com/fasterxml/jackson/databind/annotation/JsonAppend.java

 

⇒ Jackson Dataformat Extensions

⇐ Jackson Data Binding Source Code

⇑ Downloading and Reviewing jackson-*.jar

⇑⇑ Jackson - Java JSON library

2022-02-19, 36266👍, 0💬