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/deser/impl/ObjectIdReader.java

    package com.fasterxml.jackson.databind.deser.impl;
    
    import java.io.IOException;
    
    import com.fasterxml.jackson.annotation.ObjectIdGenerator;
    import com.fasterxml.jackson.annotation.ObjectIdResolver;
    
    import com.fasterxml.jackson.core.JsonParser;
    
    import com.fasterxml.jackson.databind.*;
    import com.fasterxml.jackson.databind.deser.SettableBeanProperty;
    
    /**
     * Object that knows how to deserialize Object Ids.
     */
    public class ObjectIdReader
        implements java.io.Serializable
    {
        private static final long serialVersionUID = 1L;
    
        protected final JavaType _idType;
    
        public final PropertyName propertyName;
        
        /**
         * Blueprint generator instance: actual instance will be
         * fetched from {@link SerializerProvider} using this as
         * the key.
         */
        public final ObjectIdGenerator<?> generator;
    
        public final ObjectIdResolver resolver;
    
        /**
         * Deserializer used for deserializing id values.
         */
        protected final JsonDeserializer<Object> _deserializer;
    
        public final SettableBeanProperty idProperty;
        
        /*
        /**********************************************************
        /* Life-cycle
        /**********************************************************
         */
        
        @SuppressWarnings("unchecked")
        protected ObjectIdReader(JavaType t, PropertyName propName, ObjectIdGenerator<?> gen,
                JsonDeserializer<?> deser, SettableBeanProperty idProp, ObjectIdResolver resolver)
        {
            _idType = t;
            propertyName = propName;
            generator = gen;
            this.resolver = resolver;
            _deserializer = (JsonDeserializer<Object>) deser;
            idProperty = idProp;
        }
    
        /**
         * Factory method called by {@link com.fasterxml.jackson.databind.ser.std.BeanSerializerBase}
         * with the initial information based on standard settings for the type
         * for which serializer is being built.
         */
        public static ObjectIdReader construct(JavaType idType, PropertyName propName,
                ObjectIdGenerator<?> generator, JsonDeserializer<?> deser,
                SettableBeanProperty idProp, ObjectIdResolver resolver)
        {
            return new ObjectIdReader(idType, propName, generator, deser, idProp, resolver);
        }
    
        /*
        /**********************************************************
        /* API
        /**********************************************************
         */
    
        public JsonDeserializer<Object> getDeserializer() {
            return _deserializer;
        }
    
        public JavaType getIdType() {
            return _idType;
        }
    
        /**
         * Convenience method, equivalent to calling:
         *<code>
         *  readerInstance.generator.maySerializeAsObject();
         *</code>
         * and used to determine whether Object Ids handled by the underlying
         * generator may be in form of (JSON) Objects.
         * Used for optimizing handling in cases where method returns false.
         * 
         * @since 2.5
         */
        public boolean maySerializeAsObject() {
            return generator.maySerializeAsObject();
        }
    
        /**
         * Convenience method, equivalent to calling:
         *<code>
         *  readerInstance.generator.isValidReferencePropertyName(name, parser);
         *</code>
         * and used to determine whether Object Ids handled by the underlying
         * generator may be in form of (JSON) Objects.
         * Used for optimizing handling in cases where method returns false.
         * 
         * @since 2.5
         */
        public boolean isValidReferencePropertyName(String name, JsonParser parser) {
            return generator.isValidReferencePropertyName(name, parser);
        }
        
        /**
         * Method called to read value that is expected to be an Object Reference
         * (that is, value of an Object Id used to refer to another object).
         * 
         * @since 2.3
         */
        public Object readObjectReference(JsonParser jp, DeserializationContext ctxt) throws IOException {
            return _deserializer.deserialize(jp, ctxt);
        }
    }
    

    com/fasterxml/jackson/databind/deser/impl/ObjectIdReader.java

     

    ⇒ Jackson Annotations Source Code

    ⇐ Download and Install Jackson Binary Package

    ⇑ Downloading and Reviewing jackson-*.jar

    ⇑⇑ Jackson - Java JSON library

    2022-03-29, 31941👍, 0💬