zoukankan      html  css  js  c++  java
  • @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;
        }
    }
  • 相关阅读:
    《超越自己》--刘墉
    《菊与刀》--[美]鲁思·本尼迪克特(Ruth Benedict)
    《暧昧的日本人》--李兆忠
    《女性的选择》--[日]今野由梨
    《懂得低头,才能出头》--李艳
    原来还有这样的记词方法_Java版记不规则动词_博主推荐
    《永不止步》--[奥]力克胡哲
    C#面向服务WebService从入门到精通
    C# Windows服务开发从入门到精通
    sql server递归查询
  • 原文地址:https://www.cnblogs.com/qingmuchuanqi48/p/13326598.html
Copyright © 2011-2022 走看看