Jackson Data Binding Source Code

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

  • Jackson Data Binding module allows you to converts JSON to and from POJO (Plain Old Java Object) using property accessor or using annotations.
  • Jackson Databind Source Code files are provided in the source packge (jackson-databind-2.12.4-sources.jar). You can download it at Jackson Maven Website.

    You can also browse Jackson Databind Source Code below:

    ✍: FYIcenter.com

    com/fasterxml/jackson/databind/jsontype/impl/TypeIdResolverBase.java

    package com.fasterxml.jackson.databind.jsontype.impl;
    
    import java.io.IOException;
    
    import com.fasterxml.jackson.databind.DatabindContext;
    import com.fasterxml.jackson.databind.JavaType;
    import com.fasterxml.jackson.databind.jsontype.TypeIdResolver;
    import com.fasterxml.jackson.databind.type.TypeFactory;
    
    /**
     * Partial base implementation of {@link TypeIdResolver}: all custom implementations
     * are <b>strongly</b> recommended to extend this class, instead of directly
     * implementing {@link TypeIdResolver}.
     * Note that ALL sub-class need to re-implement
     * {@link #typeFromId(DatabindContext, String)} method; otherwise implementation
     * will not work.
     *<p>
     * Note that instances created to be constructed from annotations
     * ({@link com.fasterxml.jackson.databind.annotation.JsonTypeIdResolver})
     * are always created using no-arguments constructor; protected constructor
     * is only used sub-classes.
     */
    public abstract class TypeIdResolverBase
        implements TypeIdResolver
    {
        protected final TypeFactory _typeFactory;
    
        /**
         * Common base type for all polymorphic instances handled.
         */
        protected final JavaType _baseType;
    
        protected TypeIdResolverBase() {
            this(null, null);
        }
        
        protected TypeIdResolverBase(JavaType baseType, TypeFactory typeFactory) {
            _baseType = baseType;
            _typeFactory = typeFactory;
        }
    
        // Standard type id resolvers do not need this: only useful for custom ones.
        @Override
        public void init(JavaType bt) { }
    
        @Override
        public String idFromBaseType() {
            /* By default we will just defer to regular handling, handing out the
             * base type; and since there is no value, must just pass null here
             * assuming that implementations can deal with it.
             * Alternative would be to pass a bogus Object, but that does not seem right.
             */
            return idFromValueAndType(null, _baseType.getRawClass());
        }
    
        @Override
        public JavaType typeFromId(DatabindContext context, String id)  throws IOException {
            // 22-Dec-2015, tatu: Must be overridden by sub-classes, so let's throw
            //    an exception if not
            throw new IllegalStateException("Sub-class "+getClass().getName()+" MUST implement "
                    +"`typeFromId(DatabindContext,String)");
        }
    
        /**
         * Helper method used to get a simple description of all known type ids,
         * for use in error messages.
         */
        @Override
        public String getDescForKnownTypeIds() {
            return null;
        }
    }
    

    com/fasterxml/jackson/databind/jsontype/impl/TypeIdResolverBase.java

     

    ⇒ Jackson Annotations Source Code

    ⇐ Download and Install Jackson Binary Package

    ⇑ Downloading and Reviewing jackson-*.jar

    ⇑⇑ Jackson - Java JSON library

    2022-03-29, 32019👍, 0💬