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/ser/impl/FilteredBeanPropertyWriter.java

    package com.fasterxml.jackson.databind.ser.impl;
    
    import com.fasterxml.jackson.core.JsonGenerator;
    import com.fasterxml.jackson.databind.JsonMappingException;
    import com.fasterxml.jackson.databind.JsonSerializer;
    import com.fasterxml.jackson.databind.SerializerProvider;
    import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonObjectFormatVisitor;
    import com.fasterxml.jackson.databind.ser.BeanPropertyWriter;
    import com.fasterxml.jackson.databind.util.NameTransformer;
    
    /**
     * Decorated {@link BeanPropertyWriter} that will filter out properties
     * that are not to be included in currently active JsonView.
     */
    public abstract class FilteredBeanPropertyWriter
    {    
        public static BeanPropertyWriter constructViewBased(BeanPropertyWriter base, Class<?>[] viewsToIncludeIn)
        {
            if (viewsToIncludeIn.length == 1) {
                return new SingleView(base, viewsToIncludeIn[0]);
            }
            return new MultiView(base, viewsToIncludeIn);
        }
    
        /*
        /**********************************************************
        /* Concrete sub-classes
        /**********************************************************
         */
    
        private final static class SingleView
            extends BeanPropertyWriter
            implements java.io.Serializable
        {
            private static final long serialVersionUID = 1L;
    
            protected final BeanPropertyWriter _delegate;
    
            protected final Class<?> _view;
            
            protected SingleView(BeanPropertyWriter delegate, Class<?> view)
            {
                super(delegate);
                _delegate = delegate;
                _view = view;
            }
    
            @Override
            public SingleView rename(NameTransformer transformer) {
                return new SingleView(_delegate.rename(transformer), _view);
            }
            
            @Override
            public void assignSerializer(JsonSerializer<Object> ser) {
                _delegate.assignSerializer(ser);
            }
    
            @Override
            public void assignNullSerializer(JsonSerializer<Object> nullSer) {
                _delegate.assignNullSerializer(nullSer);
            }
            
            @Override
            public void serializeAsField(Object bean, JsonGenerator gen, SerializerProvider prov)
                throws Exception
            {
                Class<?> activeView = prov.getActiveView();
                if (activeView == null || _view.isAssignableFrom(activeView)) {
                    _delegate.serializeAsField(bean, gen, prov);
                } else {
                    _delegate.serializeAsOmittedField(bean, gen, prov);
                }
            }
    
            @Override
            public void serializeAsElement(Object bean, JsonGenerator gen, SerializerProvider prov)
                throws Exception
            {
                Class<?> activeView = prov.getActiveView();
                if (activeView == null || _view.isAssignableFrom(activeView)) {
                    _delegate.serializeAsElement(bean, gen, prov);
                } else {
                    _delegate.serializeAsPlaceholder(bean, gen, prov);
                }
            }
    
            @Override
            public void depositSchemaProperty(JsonObjectFormatVisitor v,
                    SerializerProvider provider) throws JsonMappingException
            {
                Class<?> activeView = provider.getActiveView();
                if (activeView == null || _view.isAssignableFrom(activeView)) {
                    super.depositSchemaProperty(v, provider);
                }
            }
        }
    
        private final static class MultiView
            extends BeanPropertyWriter
            implements java.io.Serializable
        {
            private static final long serialVersionUID = 1L;
    
            protected final BeanPropertyWriter _delegate;
    
            protected final Class<?>[] _views;
            
            protected MultiView(BeanPropertyWriter delegate, Class<?>[] views) {
                super(delegate);
                _delegate = delegate;
                _views = views;
            }
    
            @Override
            public MultiView rename(NameTransformer transformer) {
                return new MultiView(_delegate.rename(transformer), _views);
            }
            
            @Override
            public void assignSerializer(JsonSerializer<Object> ser) {
                _delegate.assignSerializer(ser);
            }
    
            @Override
            public void assignNullSerializer(JsonSerializer<Object> nullSer) {
                _delegate.assignNullSerializer(nullSer);
            }
            
            @Override
            public void serializeAsField(Object bean, JsonGenerator gen, SerializerProvider prov)
                throws Exception
            {
                if (_inView(prov.getActiveView())) {
                    _delegate.serializeAsField(bean, gen, prov);
                    return;
                }
                _delegate.serializeAsOmittedField(bean, gen, prov);
            }
    
            @Override
            public void serializeAsElement(Object bean, JsonGenerator gen, SerializerProvider prov)
                throws Exception
            {
                if (_inView(prov.getActiveView())) {
                    _delegate.serializeAsElement(bean, gen, prov);
                    return;
                }
                _delegate.serializeAsPlaceholder(bean, gen, prov);
            }
    
            @Override
            public void depositSchemaProperty(JsonObjectFormatVisitor v,
                    SerializerProvider provider) throws JsonMappingException
            {
                if (_inView(provider.getActiveView())) {
                    super.depositSchemaProperty(v, provider);
                }
            }
    
            private final boolean _inView(Class<?> activeView) 
            {
                if (activeView == null) {
                    return true;
                }
                final int len = _views.length;
                for (int i = 0; i < len; ++i) {
                    if (_views[i].isAssignableFrom(activeView)) {
                        return true;
                    }
                }
                return false;
            }
        }
    }
    

    com/fasterxml/jackson/databind/ser/impl/FilteredBeanPropertyWriter.java

     

    ⇒ Jackson Annotations Source Code

    ⇐ Download and Install Jackson Binary Package

    ⇑ Downloading and Reviewing jackson-*.jar

    ⇑⇑ Jackson - Java JSON library

    2022-03-29, 32047👍, 0💬