All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.alibaba.dubbo.common.json.Jackson Maven / Gradle / Ivy

package com.alibaba.dubbo.common.json;

import java.util.TimeZone;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.frameworkx.common.extension.utils.ExtensionExtendUtil;

import net.jahhan.spi.common.JacksonObjectMapperProvider;

/**
 * @author dylan
 */
public class Jackson {
    private static Logger logger = LoggerFactory.getLogger(Jackson.class);
    private static ObjectMapper objectMapper;
    
    private static JacksonObjectMapperProvider getJacksonProvider() {
        return ExtensionExtendUtil.getExtension(JacksonObjectMapperProvider.class);
    }

    /**
     * 获取object mapper
     *
     * @return 
     */
    public static ObjectMapper getObjectMapper() {
        if (objectMapper == null) {
            JacksonObjectMapperProvider jacksonObjectMapperProvider = getJacksonProvider();
            if (jacksonObjectMapperProvider != null) {
                objectMapper = jacksonObjectMapperProvider.getObjectMapper();
            }
        }
        if (objectMapper == null) {
            logger.warn("load objectMapper failed, use default config.");
            buildDefaultObjectMapper();
        }
        return objectMapper;
    }

    private static synchronized void buildDefaultObjectMapper() {
        objectMapper = new ObjectMapper();
        objectMapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
//            objectMapper.disable(SerializationFeature.FLUSH_AFTER_WRITE_VALUE);
        objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
        objectMapper.setTimeZone(TimeZone.getDefault());
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy