日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Java對象轉(zhuǎn)JSON時如何動態(tài)的增刪改查屬性

1. 前言

網(wǎng)站建設(shè)公司,為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁設(shè)計及定制網(wǎng)站建設(shè)服務(wù),專注于成都定制網(wǎng)頁設(shè)計,高端網(wǎng)頁制作,對成都加固等多個行業(yè)擁有豐富的網(wǎng)站建設(shè)經(jīng)驗的網(wǎng)站建設(shè)公司。專業(yè)網(wǎng)站設(shè)計,網(wǎng)站優(yōu)化推廣哪家好,專業(yè)seo優(yōu)化優(yōu)化,H5建站,響應式網(wǎng)站。

日常開發(fā)中少不了 JSON 處理,少不了需要在 JSON 中添加額外字段或者刪除特定字段的需求。今天我們就使用Jackson類庫來實現(xiàn)這個功能。

2. JSON 字符串增加額外字段

假如我們有這樣結(jié)構(gòu)的 JSON:

 
 
 
 
  1.     "username":"felord.cn", 
  2.     "age":18 

期望增加一個性別字段gender:

 
 
 
 
  1.     "username": "felord.cn", 
  2.     "age": 18, 
  3.     "gender": "male" 

首先使用ObjectMapper加載 JSON 字符串,為ObjectNode:

 
 
 
 
  1. ObjectNode jsonNodes = objectMapper.readValue(json, ObjectNode.class); 

ObjectNode提供了很多操作 JSON 屬性的方法:

  • get 根據(jù)索引或者字段名獲取對應的JsonNode。
  • put 系列方法 提供了將基本類型、null值、對象、數(shù)組、原始值添加到 JSON 的能力。

正好我們可以借助于put方法來完成額外新增字段,完整的代碼片段:

 
 
 
 
  1. String json = "{\n" + 
  2.         "    \"username\":\"felord.cn\",\n" + 
  3.         "    \"age\":18\n" + 
  4.         "}"; 
  5.  
  6. ObjectMapper objectMapper = new ObjectMapper(); 
  7.  
  8. ObjectNode jsonNodes = objectMapper.readValue(json, ObjectNode.class); 
  9. jsonNodes.put("gender", "male"); 
  10. String newJson = objectMapper.writeValueAsString(jsonNodes); 
  11. // newJson = {"username":"felord.cn","age":18,"gender":"male"} 

3. 對象轉(zhuǎn) JSON 時新增字段

有時候我們定義的對象沒有包含特定的字段,但是轉(zhuǎn)成 JSON 時同樣需要有額外的字段。跟章節(jié) 2類似,,只不過提供的不再是 JSON 字符串而是 Java 對象:

 
 
 
 
  1. /** 
  2.  * @author felord.cn 
  3.  * @since 11:02 
  4.  */ 
  5. @Data 
  6. public class User { 
  7.     private String username; 
  8.     private Integer age; 

其實思路很明確,只要我們能夠?qū)ο筠D(zhuǎn)換為ObjectNode就可以如法炮制。ObjectMapper提供了valueToTree方法可以實現(xiàn)這一點,所以對象轉(zhuǎn) JSON 時新增字段完整的 DEMO 為:

 
 
 
 
  1. User user = new User(); 
  2. user.setUsername("felord.cn"); 
  3. user.setAge(18); 
  4.  
  5. ObjectMapper objectMapper = new ObjectMapper(); 
  6. ObjectNode jsonNodes = objectMapper.valueToTree(user); 
  7. jsonNodes.put("gender", "male"); 
  8. String newJson = objectMapper.writeValueAsString(jsonNodes); 
  9. // newJson = {"username":"felord.cn","age":18,"gender":"male"} 

4. 移除屬性

無論是 JSON 字符串或者 Java 對象轉(zhuǎn) JSON 時,移除屬性跟上面的思路一樣,只需要調(diào)用remove方法即可,這里不再演示。

5. 擴展

上面的所有操作都是借助于了Jackson中的JsonNode派生的 JSON 節(jié)點類完成的,關(guān)系如下:

JsonNode

JsonNode可以細粒度的訪問 JSON 信息,提供了非常有用的 JSON 對象操作 API,但是很多人在有相關(guān)需求的時候并不能夠想到它,所以你不需要具體的記住這些 API,只需要記住它可以操作 JSON 即可。

6. 總結(jié)

本文對 Jackson 動態(tài)的增刪改查 JSON 進行了介紹,牽引出一個很重要的操作工具JsonNode。充分利用手中已有的資源來解決問題,無需自己造輪子,也不必引入新的依賴。

本文轉(zhuǎn)載自微信公眾號「碼農(nóng)小胖哥」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系碼農(nóng)小胖哥公眾號。


分享標題:Java對象轉(zhuǎn)JSON時如何動態(tài)的增刪改查屬性
當前URL:http://www.5511xx.com/article/dhccphh.html