日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2025/3/20 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 @JsonIgnoreProperties转换实体时忽略json中不存在的字段 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

開發時遇見這么一個情況,對接放發出的json格式不確定,這里的不確定是json中的字段不確定,以往都是采用gson進行實體和json的轉換,但是找了挺長時間,還是沒找到gson中可以解決這個情況的辦法,博友們有知道的,請告知一二,跪謝。

廢話不多說,這種辦法最終使用jackson解決。

解決辦法:

json轉換成的實體類加注解@JsonIgnoreProperties(ignoreUnknown = true),注意這是類級別的注解。

@JsonIgnore注解用來忽略某些字段,可以用在Field或者Getter方法上,用在Setter方法時,和Filed效果一樣。這個注解只能用在POJO存在的字段要忽略的情況,不能滿足現在需要的情況。

@JsonIgnoreProperties(ignoreUnknown = true),將這個注解寫在類上之后,就會忽略類中不存在的字段,可以滿足當前的需要。這個注解還可以指定要忽略的字段。使用方法如下:

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

附上一個轉換的工具類

?

[java]?
  • 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;??
  • ????}??
  • ??
  • }??
  • 轉載于:https://www.cnblogs.com/zhengwuchao/p/8125906.html

    與50位技術專家面對面20年技術見證,附贈技術全景圖

    總結

    以上是生活随笔為你收集整理的@JsonIgnoreProperties转换实体时忽略json中不存在的字段的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。