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

    package com.fasterxml.jackson.databind.deser.impl;
    
    import java.io.IOException;
    
    import com.fasterxml.jackson.core.JsonProcessingException;
    
    import com.fasterxml.jackson.databind.deser.SettableAnyProperty;
    import com.fasterxml.jackson.databind.deser.SettableBeanProperty;
    
    /**
     * Base class for property values that need to be buffered during
     * deserialization.
     */
    public abstract class PropertyValue
    {
        public final PropertyValue next;
    
        /**
         * Value to assign when POJO has been instantiated.
         */
        public final Object value;
        
        protected PropertyValue(PropertyValue next, Object value)
        {
            this.next = next;
            this.value = value;
        }
    
        /**
         * Method called to assign stored value of this property to specified
         * bean instance
         */
        public abstract void assign(Object bean)
            throws IOException, JsonProcessingException;
    
        /*
        /**********************************************************
        /* Concrete property value classes
        /**********************************************************
         */
    
        /**
         * Property value that used when assigning value to property using
         * a setter method or direct field access.
         */
        final static class Regular
            extends PropertyValue
        {
            final SettableBeanProperty _property;
            
            public Regular(PropertyValue next, Object value,
                           SettableBeanProperty prop)
            {
                super(next, value);
                _property = prop;
            }
    
            @Override
            public void assign(Object bean)
                throws IOException, JsonProcessingException
            {
                _property.set(bean, value);
            }
        }
        
        /**
         * Property value type used when storing entries to be added
         * to a POJO using "any setter" (method that takes name and
         * value arguments, allowing setting multiple different
         * properties using single method).
         */
        final static class Any
            extends PropertyValue
        {
            final SettableAnyProperty _property;
            final String _propertyName;
            
            public Any(PropertyValue next, Object value,
                       SettableAnyProperty prop,
                       String propName)
            {
                super(next, value);
                _property = prop;
                _propertyName = propName;
            }
    
            @Override
            public void assign(Object bean)
                throws IOException, JsonProcessingException
            {
                _property.set(bean, _propertyName, value);
            }
        }
    
        /**
         * Property value type used when storing entries to be added
         * to a Map.
         */
        final static class Map
            extends PropertyValue
        {
            final Object _key;
            
            public Map(PropertyValue next, Object value, Object key)
            {
                super(next, value);
                _key = key;
            }
    
            @SuppressWarnings("unchecked") 
            @Override
            public void assign(Object bean)
                throws IOException, JsonProcessingException
            {
                ((java.util.Map<Object,Object>) bean).put(_key, value);
            }
        }
    }
    

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

     

    ⇒ Jackson Annotations Source Code

    ⇐ Download and Install Jackson Binary Package

    ⇑ Downloading and Reviewing jackson-*.jar

    ⇑⇑ Jackson - Java JSON library

    2022-03-29, 32314👍, 0💬