• Jackson @JsonIgnoreProperties(ignoreUnknown = true) 作用和使用场景


    作用对象

    用于一般的 JSONUtil 将 json 串转为 指定的类实体。(当指定的类使用了注解 @JsonIgnoreProperties(ignoreUnknown = true)

    指定的 json 为 jackson

    相关依赖

            <dependency>
                <groupId>com.fasterxml.jackson.coregroupId>
                <artifactId>jackson-databindartifactId>
                <version>2.13.2version>
            dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.coregroupId>
                <artifactId>jackson-coreartifactId>
                <version>2.13.2version>
            dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    示例JSONUtil

    import com.fasterxml.jackson.annotation.JsonAutoDetect;
    import com.fasterxml.jackson.annotation.PropertyAccessor;
    import com.fasterxml.jackson.core.type.TypeReference;
    import com.fasterxml.jackson.databind.DeserializationFeature;
    import com.fasterxml.jackson.databind.JsonNode;
    import com.fasterxml.jackson.databind.ObjectMapper;
    import com.fasterxml.jackson.databind.node.ObjectNode;
    .......
    
    public class JsonUtil {
    
        private static ObjectMapper objectMapper = new ObjectMapper();
    
        static {
            objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
            objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
            objectMapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
        }
    
        /**
         * 将json转化为实体
         *
         * @param jsonStr
         * @param obj
         * @return
         */
        public static <T> T JSONToObj(String jsonStr, Class<T> obj) {
            T t = null;
            try {
                t = objectMapper.readValue(jsonStr, obj);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return t;
        }
    
        ........
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38

    使用举例:

    StartBusDTO businessFlowDTO = JsonUtil.JSONToObj(json, StartBusDTO.class);
    
    • 1

    则 StartBusDTO 的实体如果添加了注解
    @JsonIgnoreProperties(ignoreUnknown = true) 例如:

    import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
    
    @JsonIgnoreProperties(ignoreUnknown = true)
    public class StartBusDTO{
         .........
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    场景

    在 JSON 使用 util 转为实体类的过程中可能出现 json 中的属性多于或者少于 要转换的实体,一般情况下在 json 中属性少于 要转换的实体时并不会出现问题,但当出现属性多于要转换的实体的时如果不添加此注解则会直接抛出异常,故此注解用于对实体转换的兼容保护。

  • 相关阅读:
    域名查询服务商的方法
    女性必看——“黄体破裂”到底有多可怕?
    MySQL-使用CPP接入到MySQL
    web前端期末大作业:个人网站设计——响应式个人小站网站HTML+CSS+JavaScript
    华为数通——Vlan
    java spring cloud 企业电子招标采购系统源码:营造全面规范安全的电子招投标环境,促进招投标市场健康可持续发展
    Java DbUtils实用
    C语言,指针的一些运算
    pat basic 1095 解码PAT准考证
    STM32自学☞AD多通道
  • 原文地址:https://blog.csdn.net/weixin_44131922/article/details/126230388