最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java使用ObjectMapper的簡單示例

 更新時(shí)間:2020年09月18日 09:34:11   作者:學(xué)海無涯519  
這篇文章主要介紹了Java使用ObjectMapper的簡單示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、什么是ObjectMapper?

  • ObjectMapper類是Jackson庫的主要類,它提供一些功能將數(shù)據(jù)集或?qū)ο筠D(zhuǎn)換的實(shí)現(xiàn)。
  • 它將使用JsonParser和JsonGenerator實(shí)例來實(shí)現(xiàn)JSON的實(shí)際讀/寫。

二、ObjectMapper怎么使用?

2.1 配置

2.1.1 普通Java項(xiàng)目(引入如下依賴即可)

<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-databind</artifactId>
  <version>2.9.5</version>
</dependency>
 
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-core</artifactId>
  <version>2.9.5</version>
</dependency>
 
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations -->
<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-annotations</artifactId>
  <version>2.9.5</version>
</dependency>

2.1.2 Sring Boot項(xiàng)目

重要說明:

由于Spring Boot的自動配置JacksonAutoConfiguration中有如下圖所示的依賴引入和配置,所以不需要我們額外配置

2.2 實(shí)戰(zhàn)

User類

@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class User implements Serializable {

  private static final long serialVersionUID = 1L;

  // 姓名
  private String name;

  // 性別
  private String sex;

  // 年齡
  private Integer age;
}

2.2.1 Java對象、集合轉(zhuǎn)JSON

 public static void main(String[] args) throws IOException {
 
     ObjectMapper objectMapper = new ObjectMapper();
 
     User user = new User();
     user.setName("張三");
     user.setAge(20);
     user.setSex("男");
 
     List<User> userList = new ArrayList<>();
     userList.add(user);
 
     // 對象轉(zhuǎn)換為JSON
     String userJsonString = objectMapper.writeValueAsString(user); 
     // 集合轉(zhuǎn)換為JSON
     String userListJsonString = objectMapper.writeValueAsString(userList); }

2.2.2 JSON轉(zhuǎn)Java對象、集合

// JOSN轉(zhuǎn)對象(java對象)
    User newUser = objectMapper.readValue(userJsonString, User.class);

    // JOSN轉(zhuǎn)集合(集合)
    List<User> list = objectMapper.readValue(userListJsonString, new TypeReference<List<User>>(){});

2.2.3json轉(zhuǎn)JsonNode、ObjectNode

說明:

Jackson的JsonNode和ObjectNode兩個(gè)類,前者是不可變的,一般用于讀取。后者可變,一般用于創(chuàng)建Json對象圖。

// json轉(zhuǎn)JsonNode
    JsonNode jsonNode = objectMapper.readTree(userJsonString);
    String sex = jsonNode.get("sex").asText();

    // JsonNode轉(zhuǎn)ObjectNode
    ObjectNode objectNode = (ObjectNode)jsonNode;

    // json轉(zhuǎn)JsonNode
    JsonNode jsonNodeList = objectMapper.readTree(userListJsonString);

    // JsonNode轉(zhuǎn)ObjectNode
    ArrayNode arrayNode = (ArrayNode)jsonNodeList;

2.2.4 jsonNode轉(zhuǎn)對象、集合

// jsonNode轉(zhuǎn)為json字符串
    String jsonNodeString = objectMapper.writeValueAsString(jsonNode);
    String jsonNodeListString = objectMapper.writeValueAsString(jsonNodeList);

    // json字符串轉(zhuǎn)對象、集合
    User user1 = objectMapper.readValue(jsonNodeString, User.class);
    List<User> list1 = objectMapper.readValue(jsonNodeListString, new TypeReference<List<User>>() {});

2.3 注意事項(xiàng)

2.3.1微服務(wù)中從其他服務(wù)獲取過來的對象,如果從Object強(qiáng)轉(zhuǎn)為自定義的類型會報(bào)錯(cuò),利用ObjectMapper轉(zhuǎn)換。

正確示例:

  說明:Schedule類、OutpOrderBill類都是類似于User類的Java對象。

// 對象
Schedule schedule = objectMapper.convertValue(callNurseCenterService.getSchedule(registRecord.getScheCode()).getData(), Schedule.class);

// 泛型為對象的集合
List<OutpOrderBill> outpOrderBillList = objectMapper.convertValue(
              callChargeCenterService.getOrderBillByOrderCode(orders.getOrgCode(),orders.getOrderCode()).getData(), 
              new TypeReference<List<OutpOrderBill>>() {});

2.3.2 上面轉(zhuǎn)換的過程中,如果返回的字段你不是都需要,需要忽略其中的幾個(gè)字段,在自定義的類中添加標(biāo)紅注解

@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@JsonIgnoreProperties(ignoreUnknown = true)
public class User implements Serializable {

  private static final long serialVersionUID = 1L;

   ////提供有這個(gè)參數(shù),但是不想獲取
//  // 姓名
//  private String name;

  // 性別
  private String sex;

  // 年齡
  private Integer age;
}

如果不想添加注解,可以使用下面兩種方式

第一種方式:

ObjectMapper mapper = new ObjectMapper().setVisibility(JsonMethod.FIELD,Visibility.ANY);
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

第二種方式:

ObjectMapper objectMapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

2.3.3 在轉(zhuǎn)換的過程中,有可能有的屬性被設(shè)成空就不序列化等的需求,可以在類的屬性上或直接在類上加上一下注解。用在屬性上就是只針對一個(gè)屬性,用在類上就是針對類里的所有屬性。

@JsonInclude(Include.NON_NULL) 

@JsonInclude(Include.Include.ALWAYS) 默認(rèn) 

@JsonInclude(Include.NON_DEFAULT) 屬性為默認(rèn)值不序列化 

@JsonInclude(Include.NON_EMPTY) 屬性為 空(“”) 或者為 NULL 都不序列化 

@JsonInclude(Include.NON_NULL) 屬性為NULL 不序列化

參考網(wǎng)址:

Jackson-1.9.9在線文檔

到此這篇關(guān)于Java使用ObjectMapper的簡單示例的文章就介紹到這了,更多相關(guān)Java使用ObjectMapper內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Jenkins自動部署SpringBoot項(xiàng)目實(shí)踐教程

    Jenkins自動部署SpringBoot項(xiàng)目實(shí)踐教程

    這篇文章主要介紹了Jenkins自動部署SpringBoot項(xiàng)目實(shí)踐教程,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • SpringBoot解決Required?String?parameter?xxx?is?not?present問題

    SpringBoot解決Required?String?parameter?xxx?is?not?prese

    這篇文章主要介紹了SpringBoot解決Required?String?parameter?xxx?is?not?present問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Spring Boot 集成 Quartz 使用Cron 表達(dá)式實(shí)現(xiàn)定時(shí)任務(wù)

    Spring Boot 集成 Quartz 使用Cron 表達(dá)式實(shí)現(xiàn)定

    本文介紹了如何在SpringBoot項(xiàng)目中集成Quartz并使用Cron表達(dá)式進(jìn)行任務(wù)調(diào)度,通過添加Quartz依賴、創(chuàng)建Quartz任務(wù)、配置任務(wù)調(diào)度以及啟動項(xiàng)目,可以實(shí)現(xiàn)定時(shí)任務(wù)的執(zhí)行,Cron表達(dá)式提供了靈活的任務(wù)調(diào)度方式,適用于各種復(fù)雜的定時(shí)任務(wù)需求,感興趣的朋友一起看看吧
    2025-03-03
  • Java JSqlParser解析,修改和生成SQL語句的實(shí)用技巧

    Java JSqlParser解析,修改和生成SQL語句的實(shí)用技巧

    JSQLParser 是一個(gè)強(qiáng)大的開源 Java 庫,用于解析 SQL 并提供語法樹操作功能,本文將詳細(xì)介紹如何使用 JSQLParser,并提供常見使用場景的代碼示例,希望對大家有所幫助
    2025-04-04
  • SpringBoot項(xiàng)目啟動健康檢查的操作方法

    SpringBoot項(xiàng)目啟動健康檢查的操作方法

    在現(xiàn)代的微服務(wù)架構(gòu)中,容器化技術(shù)已經(jīng)成為一種主流的部署方式,Docker 作為容器化技術(shù)的代表,提供了一種輕量級、可移植的解決方案,然而,僅僅將應(yīng)用容器化是不夠的,我們還需要確保這些容器在運(yùn)行時(shí)能夠保持健康狀態(tài),這就是健康檢查發(fā)揮作用的地方
    2024-12-12
  • java?-jar指定外部配置文件操作步驟

    java?-jar指定外部配置文件操作步驟

    這篇文章主要給大家介紹了關(guān)于java?-jar指定外部配置文件的相關(guān)資料,需要的朋友可以參考下
    2023-11-11
  • 解決Springboot集成Redis集群配置公網(wǎng)IP連接報(bào)私網(wǎng)IP連接失敗問題

    解決Springboot集成Redis集群配置公網(wǎng)IP連接報(bào)私網(wǎng)IP連接失敗問題

    在Springboot 集成 Redis集群配置公網(wǎng)IP連接報(bào)私網(wǎng)IP連接失敗,一直報(bào)私有IP連接失敗,所以本文小編給大家介紹了如何解決報(bào)錯(cuò)問題,如果有遇到相同問題的同學(xué),可以參考閱讀本文
    2023-10-10
  • Netty進(jìn)階之ChannelPoolMap源碼解析

    Netty進(jìn)階之ChannelPoolMap源碼解析

    這篇文章主要介紹了Netty進(jìn)階之ChannelPoolMap源碼解析,ChannelPoolMap是用來存儲ChannelPool和指定key的一個(gè)集合Map,實(shí)際的應(yīng)用場景就是服務(wù)器端是一個(gè)分布式集群服務(wù),擁有多個(gè)配置地址,這樣我們就可以配置多個(gè)服務(wù)地址,減輕單臺服務(wù)器的壓力,需要的朋友可以參考下
    2023-11-11
  • 使用SpringBoot創(chuàng)建一個(gè)RESTful API的詳細(xì)步驟

    使用SpringBoot創(chuàng)建一個(gè)RESTful API的詳細(xì)步驟

    使用 Java 的 Spring Boot 創(chuàng)建 RESTful API 可以滿足多種開發(fā)場景,它提供了快速開發(fā)、易于配置、可擴(kuò)展、可維護(hù)的優(yōu)點(diǎn),尤其適合現(xiàn)代軟件開發(fā)的需求,幫助你快速構(gòu)建出高性能的后端服務(wù),需要的朋友可以參考下
    2025-01-01
  • Java中IO的NIO通道解析

    Java中IO的NIO通道解析

    這篇文章主要介紹了Java中IO的NIO通道解析,NIO 提供了與傳統(tǒng) BIO 模型中的 Socket 和 ServerSocket 相對應(yīng)的 SocketChannel 和 ServerSocketChannel 兩種不同的套接字通道實(shí)現(xiàn),需要的朋友可以參考下
    2024-01-01

最新評論

肃南| 高州市| 太仆寺旗| 鹰潭市| 马鞍山市| 黑龙江省| 甘孜县| 广昌县| 宜川县| 南城县| 黄陵县| 肃北| 岚皋县| 高平市| 富阳市| 莱州市| 康马县| 明星| 富川| 华池县| 宾川县| 克拉玛依市| 连云港市| 潍坊市| 益阳市| 临朐县| 仙游县| 黄石市| 临海市| 呼玛县| 香河县| 顺昌县| 怀仁县| 江川县| 祁阳县| 龙岩市| 印江| 镇宁| 彝良县| 上栗县| 拉孜县|