zoukankan      html  css  js  c++  java
  • Jackson通用工具类

        compile group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.11.1'
        compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.11.1'
    
    import com.fasterxml.jackson.annotation.JsonInclude;
    import com.fasterxml.jackson.core.JsonGenerator;
    import com.fasterxml.jackson.core.JsonParser;
    import com.fasterxml.jackson.core.JsonProcessingException;
    import com.fasterxml.jackson.core.type.TypeReference;
    import com.fasterxml.jackson.databind.*;
    import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
    import lombok.SneakyThrows;
    import lombok.extern.slf4j.Slf4j;
    
    import java.io.IOException;
    import java.time.Instant;
    import java.time.ZoneId;
    import java.time.ZonedDateTime;
    
    @Slf4j
    public class Json {
    
        private static ObjectMapper MAPPER;
    
        static {
            JavaTimeModule javaTimeModule = new JavaTimeModule();
            javaTimeModule.addSerializer(ZonedDateTime.class, new JsonSerializer<ZonedDateTime>() {
    
                @Override
                public void serialize(ZonedDateTime value, JsonGenerator gen, SerializerProvider serializers)
                        throws IOException {
                    gen.writeNumber(value.toInstant().toEpochMilli());
                }
            });
            javaTimeModule.addDeserializer(ZonedDateTime.class, new JsonDeserializer<ZonedDateTime>() {
                @Override
                public ZonedDateTime deserialize(JsonParser p, DeserializationContext ctxt)
                        throws IOException, JsonProcessingException {
                    return ZonedDateTime.ofInstant(Instant.ofEpochMilli(p.readValueAs(Long.class)), ZoneId.systemDefault());
                }
            });
            ObjectMapper objectMapper = new ObjectMapper();
            objectMapper.setDefaultPropertyInclusion(JsonInclude.Include.NON_NULL);
            objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false);
            objectMapper.registerModule(javaTimeModule);
            MAPPER = objectMapper;
        }
    
        public static ObjectMapper getMapper() {
            return MAPPER;
        }
    
        @SneakyThrows
        public static String toJson(Object object) {
            return MAPPER.writeValueAsString(object);
        }
    
        @SneakyThrows
        public static <T> T toObject(String json, Class<T> clazz) {
            return MAPPER.readValue(json, clazz);
        }
    
        public static <T> T toObject(Object object, Class<T> clazz) {
            return MAPPER.convertValue(object, clazz);
        }
    
        @SneakyThrows
        public static <T> T toObject(String json, TypeReference<T> type) {
            return MAPPER.readValue(json, type);
        }
    
        public static <T> T toObject(Object object, TypeReference<T> type) {
            return MAPPER.convertValue(object, type);
        }
    
    }
    
  • 相关阅读:
    Linux文件属性
    [Oracle] Listener的动态注册
    jQuery easyUI Pagination控件自定义div分页(不用datagrid)
    桂林电子科技大学出校流量控制器Android版1.0.0
    php使用check box
    Python windows ping
    Python selenium chrome 环境配置
    Linux wget auto login and backup database
    PyQt4 ShowHMDB show sqlite3 with QTableWidget summary
    PyQt4 py2exe 打包 HardwareManager
  • 原文地址:https://www.cnblogs.com/ylty/p/13673445.html
Copyright © 2011-2022 走看看