zoukankan      html  css  js  c++  java
  • spring 中json使用

    1.json序列化工具

    public class JsonUtils {
        /**
         * Logger for this class
         */
        private static final Logger logger = LoggerFactory.getLogger(JsonUtils.class);
    
        private final static ObjectMapper objectMapper = new ObjectMapper();
    
        static {
            objectMapper.configure(JsonParser.Feature.ALLOW_COMMENTS, true);
            objectMapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
            objectMapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);
            objectMapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_CONTROL_CHARS, true);
            objectMapper.configure(JsonParser.Feature.INTERN_FIELD_NAMES, true);
            objectMapper.configure(JsonParser.Feature.CANONICALIZE_FIELD_NAMES, true);
            objectMapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        }
    
        private JsonUtils() {
        }
    
        public static String encode(Object obj) {
            try {
                return objectMapper.writeValueAsString(obj);
            } catch (JsonGenerationException e) {
                logger.error("encode(Object)", e); //$NON-NLS-1$
            } catch (JsonMappingException e) {
                logger.error("encode(Object)", e); //$NON-NLS-1$
            } catch (IOException e) {
                logger.error("encode(Object)", e); //$NON-NLS-1$
            }
            return null;
        }
    
        /**
         * 将json string反序列化成对象
         *
         * @param json
         * @param valueType
         * @return
         */
        public static <T> T decode(String json, Class<T> valueType) {
            try {
                return objectMapper.readValue(json, valueType);
            } catch (JsonParseException e) {
                logger.error("decode(String, Class<T>)", e);
            } catch (JsonMappingException e) {
                logger.error("decode(String, Class<T>)", e);
            } catch (IOException e) {
                logger.error("decode(String, Class<T>)", e);
            }
            return null;
        }
    
        /**
         * 将json array反序列化为对象
         *
         * @param json
         * @param jsonTypeReference
         * @return
         */
        @SuppressWarnings("unchecked")
        public static <T> T decode(String json, TypeReference<T> typeReference) {
            try {
                return (T) objectMapper.readValue(json, typeReference);
            } catch (JsonParseException e) {
                logger.error("decode(String, JsonTypeReference<T>)", e);
            } catch (JsonMappingException e) {
                logger.error("decode(String, JsonTypeReference<T>)", e);
            } catch (IOException e) {
                logger.error("decode(String, JsonTypeReference<T>)", e);
            }
            return null;
        }
    
    }

    2.springmvc中自定义JsonConvert

    @ControllerAdvice
    public class MyWebBindingInitializer implements WebBindingInitializer {
    
        @Autowired
        private MappingJackson2HttpMessageConverter jackson2HttpMessageConverter;
    
        @InitBinder
        @Override
        public void initBinder(WebDataBinder webDataBinder) {
            webDataBinder.registerCustomEditor(String.class, new StringTrimmerEditor(true));
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            dateFormat.setLenient(false);
            webDataBinder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
    
            ObjectMapper objectMapper=jackson2HttpMessageConverter.getObjectMapper();
            objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
            SimpleModule simpleModule = new SimpleModule();
            objectMapper.registerModule(simpleModule);
            objectMapper.configure(JsonParser.Feature.ALLOW_NUMERIC_LEADING_ZEROS, true);
        }
    
    }
  • 相关阅读:
    Windows 2003 服务器 关闭IIS中FTP匿名访问
    Linux 服务器 关闭FTP匿名访问
    CentOS 7 配置本地 YUM源
    Linux中使用MegaCli工具查看、管理Raid卡信息
    Linux 6 本地网络配置方法
    勒索病毒,华为/H3C三层交换机/路由器用ACL访问控制实现端口禁用
    Linux RedHat7.0_64位系统中安装Oracle_11g_R2
    Linux 7 重置root密码
    windows 系统防火墙 添加端口号方法
    SpringBoot 2.x (12):整合Elasticsearch
  • 原文地址:https://www.cnblogs.com/z-test/p/10855238.html
Copyright © 2011-2022 走看看