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/TypeSerializerBase.java

    package com.fasterxml.jackson.databind.jsontype.impl;
    
    import java.io.IOException;
    
    import com.fasterxml.jackson.annotation.JsonTypeInfo;
    
    import com.fasterxml.jackson.core.JsonGenerator;
    
    import com.fasterxml.jackson.core.type.WritableTypeId;
    import com.fasterxml.jackson.databind.BeanProperty;
    import com.fasterxml.jackson.databind.jsontype.TypeIdResolver;
    import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
    
    public abstract class TypeSerializerBase extends TypeSerializer
    {
        protected final TypeIdResolver _idResolver;
    
        protected final BeanProperty _property;
    
        protected TypeSerializerBase(TypeIdResolver idRes, BeanProperty property)
        {
            _idResolver = idRes;
            _property = property;
        }
    
        /*
        /**********************************************************
        /* Base implementations, simple accessors
        /**********************************************************
         */
    
        @Override
        public abstract JsonTypeInfo.As getTypeInclusion();
    
        @Override
        public String getPropertyName() { return null; }
        
        @Override
        public TypeIdResolver getTypeIdResolver() { return _idResolver; }
    
        @Override
        public WritableTypeId writeTypePrefix(JsonGenerator g,
                WritableTypeId idMetadata) throws IOException
        {
            _generateTypeId(idMetadata);
            return g.writeTypePrefix(idMetadata);
        }
    
        @Override
        public WritableTypeId writeTypeSuffix(JsonGenerator g,
                WritableTypeId idMetadata) throws IOException
        {
            return g.writeTypeSuffix(idMetadata);
        }
    
        /**
         * Helper method that will generate type id to use, if not already passed.
         *
         * @since 2.9
         */
        protected void _generateTypeId(WritableTypeId idMetadata) {
            Object id = idMetadata.id;
            if (id == null) {
                final Object value = idMetadata.forValue;
                Class<?> typeForId = idMetadata.forValueType;
                if (typeForId == null) {
                    id = idFromValue(value);
                } else {
                    id = idFromValueAndType(value, typeForId);
                }
                idMetadata.id = id;
            }
        }
    
        /*
        /**********************************************************
        /* Helper methods for subclasses
        /**********************************************************
         */
    
        protected String idFromValue(Object value) {
            String id = _idResolver.idFromValue(value);
            if (id == null) {
                handleMissingId(value);
            }
            return id;
        }
    
        protected String idFromValueAndType(Object value, Class<?> type) {
            String id = _idResolver.idFromValueAndType(value, type);
            if (id == null) {
                handleMissingId(value);
            }
            return id;
        }
    
        // As per [databind#633], maybe better just not do anything...
        protected void handleMissingId(Object value) {
            /*
            String typeDesc = ClassUtil.classNameOf(value, "NULL");
            throw new IllegalArgumentException("Cannot resolve type id for "
                    +typeDesc+" (using "+_idResolver.getClass().getName()+")");
                    */
        }
    }
    

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

     

    ⇒ Jackson Annotations Source Code

    ⇐ Download and Install Jackson Binary Package

    ⇑ Downloading and Reviewing jackson-*.jar

    ⇑⇑ Jackson - Java JSON library

    2022-03-29, 31901👍, 0💬