• 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 中属性少于 要转换的实体时并不会出现问题,但当出现属性多于要转换的实体的时如果不添加此注解则会直接抛出异常,故此注解用于对实体转换的兼容保护。

  • 相关阅读:
    《第三期(先导课)》之《Python 开发环境搭建》
    HTML做一个抗疫逆行者感动人物页面(纯html代码)
    DDD从入门到精通(请点赞收藏)
    JUC-Semaphore基础篇
    您需要 “企业内容管理“(ECM)还是 “文档管理系统”(DMS)?
    网络安全(黑客)自学
    12 设计推特----来源于陈C同学(CC)
    error C2589: ‘(‘: illegal token on right side of ‘::‘
    聊聊在springboot项目中如何配置多个kafka消费者
    .NET Core 实现Excel的导入导出
  • 原文地址:https://blog.csdn.net/weixin_44131922/article/details/126230388