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/std/StdNodeBasedDeserializer.java

    package com.fasterxml.jackson.databind.deser.std;
    
    import java.io.IOException;
    
    import com.fasterxml.jackson.core.*;
    import com.fasterxml.jackson.databind.*;
    import com.fasterxml.jackson.databind.deser.ResolvableDeserializer;
    import com.fasterxml.jackson.databind.jsontype.TypeDeserializer;
    
    /**
     * Convenience deserializer that may be used to deserialize values given an
     * intermediate tree representation ({@link JsonNode}).
     * Note that this is a slightly simplified alternative to {@link StdDelegatingDeserializer}).
     *
     * @param <T> Target type of this deserializer; that is, type of values that
     *   input data is deserialized into.
     * 
     * @since 2.5
     */
    public abstract class StdNodeBasedDeserializer<T>
        extends StdDeserializer<T>
        implements ResolvableDeserializer
    {
        private static final long serialVersionUID = 1L;
    
        protected JsonDeserializer<Object> _treeDeserializer;
    
        /*
        /**********************************************************
        /* Life-cycle
        /**********************************************************
         */
        
        protected StdNodeBasedDeserializer(JavaType targetType) {
            super(targetType);
        }
    
        protected StdNodeBasedDeserializer(Class<T> targetType) {
            super(targetType);
        }
    
        /**
         * "Copy-constructor" used when creating a modified copies, most often
         * if sub-class implements {@link com.fasterxml.jackson.databind.deser.ContextualDeserializer}.
         */
        protected StdNodeBasedDeserializer(StdNodeBasedDeserializer<?> src) {
            super(src);
            _treeDeserializer = src._treeDeserializer;
        }
    
        @Override
        public void resolve(DeserializationContext ctxt) throws JsonMappingException {
            _treeDeserializer = ctxt.findRootValueDeserializer(ctxt.constructType(JsonNode.class));
        }
    
        /*
        /**********************************************************
        /* Abstract methods for sub-classes
        /**********************************************************
         */
    
        public abstract T convert(JsonNode root, DeserializationContext ctxt) throws IOException;
    
        /*
        /**********************************************************
        /* JsonDeserializer impl
        /**********************************************************
         */
        
        @Override
        public T deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException {
            JsonNode n = (JsonNode) _treeDeserializer.deserialize(jp, ctxt);
            return convert(n, ctxt);
        }
    
        @Override
        public Object deserializeWithType(JsonParser jp, DeserializationContext ctxt,
                TypeDeserializer td)
            throws IOException, JsonProcessingException
        {
            /* 19-Nov-2014, tatu: Quite likely we'd have some issues but... let's
             *   try, just in case.
             */
            JsonNode n = (JsonNode) _treeDeserializer.deserializeWithType(jp, ctxt, td);
            return convert(n, ctxt);
        }
    }
    

    com/fasterxml/jackson/databind/deser/std/StdNodeBasedDeserializer.java

     

    ⇒ Jackson Annotations Source Code

    ⇐ Download and Install Jackson Binary Package

    ⇑ Downloading and Reviewing jackson-*.jar

    ⇑⇑ Jackson - Java JSON library

    2022-03-29, 32284👍, 0💬