• @JsonIgnoreProperties转换实体时忽略json中不存在的字段


    json转换成的实体类加注解@JsonIgnoreProperties(ignoreUnknown = true),注意这是类级别的注解。

    @JsonIgnore注解用来忽略某些字段,可以用在Field或者Getter方法上,用在Setter方法时,和Filed效果一样。这个注解只能用在POJO存在的字段要忽略的情况,不能满足现在需要的情况。

    @JsonIgnoreProperties(ignoreUnknown = true),将这个注解写在类上之后,就会忽略类中不存在的字段,可以满足当前的需要。这个注解还可以指定要忽略的字段。使用方法如下:

    @JsonIgnoreProperties({ "internalId", "secretKey" })
    指定的字段不会被序列化和反序列化。

    附上一个转换的工具类

    package com.*******.****.drp.util;
    import java.io.IOException;
     
    import org.codehaus.jackson.JsonGenerationException;
    import org.codehaus.jackson.JsonParseException;
    import org.codehaus.jackson.JsonParser;
    import org.codehaus.jackson.map.DeserializationConfig;
    import org.codehaus.jackson.map.JsonMappingException;
    import org.codehaus.jackson.map.ObjectMapper;
     
    import lombok.extern.slf4j.Slf4j;
    /** 
    * @Description:
    * @author :******| paranoia_zk@yeah.net 
    * @date :2017年6月8日 上午10:32:04 
    */
    @Slf4j
    public class JacksonUtil {
        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);
        }
     
        public static String encode(Object obj) {
            try {
                return objectMapper.writeValueAsString(obj);
            } catch (JsonGenerationException e) {
                log.error("encode(Object)", e); //$NON-NLS-1$
            } catch (JsonMappingException e) {
                log.error("encode(Object)", e); //$NON-NLS-1$
            } catch (IOException e) {
                log.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) {
                log.error("decode(String, Class<T>)", e);
            } catch (JsonMappingException e) {
                log.error("decode(String, Class<T>)", e);
            } catch (IOException e) {
                log.error("decode(String, Class<T>)", e);
            }
            return null;
        }
    }
  • 相关阅读:
    Dapr牵手.NET学习笔记:状态管理之dockercompose发布
    Dapr牵手.NET学习笔记:跨物理机负载均衡服务调用
    Dapr牵手.NET学习笔记:状态管理进阶(一)
    ORACLE EBS 点滴积累之AP 应付
    SpringMVC框架搭建(idea2021.3.2) 操作数据库
    Linux判断服务进程存在,存在则重启,不存在则启动
    C++ thread lambda expression contains multiple function and pass argument
    C++ thread pass multiple functions and arguments via lambda expression
    C++ multi thread
    C++ bubble sort
  • 原文地址:https://www.cnblogs.com/qingmuchuanqi48/p/13326598.html
Copyright © 2020-2023  润新知