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

    package com.fasterxml.jackson.databind.deser.impl;
    
    import java.io.IOException;
    import java.util.*;
    
    import com.fasterxml.jackson.core.*;
    import com.fasterxml.jackson.databind.DeserializationContext;
    import com.fasterxml.jackson.databind.JsonDeserializer;
    import com.fasterxml.jackson.databind.deser.SettableBeanProperty;
    import com.fasterxml.jackson.databind.util.NameTransformer;
    import com.fasterxml.jackson.databind.util.TokenBuffer;
    
    /**
     * Object that is responsible for handling acrobatics related to
     * deserializing "unwrapped" values; sets of properties that are
     * embedded (inlined) as properties of parent JSON object.
     */
    public class UnwrappedPropertyHandler
    {
        protected final List<SettableBeanProperty> _properties;
    
        public UnwrappedPropertyHandler()  {
            _properties = new ArrayList<SettableBeanProperty>();
       }
        protected UnwrappedPropertyHandler(List<SettableBeanProperty> props)  {
            _properties = props;
        }
    
        public void addProperty(SettableBeanProperty property) {
            _properties.add(property);
        }
    
        public UnwrappedPropertyHandler renameAll(NameTransformer transformer)
        {
            ArrayList<SettableBeanProperty> newProps = new ArrayList<SettableBeanProperty>(_properties.size());
            for (SettableBeanProperty prop : _properties) {
                String newName = transformer.transform(prop.getName());
                prop = prop.withSimpleName(newName);
                JsonDeserializer<?> deser = prop.getValueDeserializer();
                if (deser != null) {
                    @SuppressWarnings("unchecked")
                    JsonDeserializer<Object> newDeser = (JsonDeserializer<Object>)
                        deser.unwrappingDeserializer(transformer);
                    if (newDeser != deser) {
                        prop = prop.withValueDeserializer(newDeser);
                    }
                }
                newProps.add(prop);
            }
            return new UnwrappedPropertyHandler(newProps);
        }
        
        @SuppressWarnings("resource")
        public Object processUnwrapped(JsonParser originalParser, DeserializationContext ctxt,
                Object bean, TokenBuffer buffered)
            throws IOException
        {
            for (int i = 0, len = _properties.size(); i < len; ++i) {
                SettableBeanProperty prop = _properties.get(i);
                JsonParser p = buffered.asParser();
                p.nextToken();
                prop.deserializeAndSet(p, ctxt, bean);
            }
            return bean;
        }
    }
    

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

     

    ⇒ Jackson Annotations Source Code

    ⇐ Download and Install Jackson Binary Package

    ⇑ Downloading and Reviewing jackson-*.jar

    ⇑⇑ Jackson - Java JSON library

    2022-03-29, 31949👍, 0💬