偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Java對(duì)象轉(zhuǎn)JSON時(shí)如何動(dòng)態(tài)的增刪改查屬性

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

[[349154]]

1. 前言

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

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

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

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

期望增加一個(gè)性別字段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ù)索引或者字段名獲取對(duì)應(yīng)的JsonNode。
  • put 系列方法 提供了將基本類型、null值、對(duì)象、數(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. 對(duì)象轉(zhuǎn) JSON 時(shí)新增字段

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

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

其實(shí)思路很明確,只要我們能夠?qū)?duì)象轉(zhuǎn)換為ObjectNode就可以如法炮制。ObjectMapper提供了valueToTree方法可以實(shí)現(xiàn)這一點(diǎn),所以對(duì)象轉(zhuǎn) JSON 時(shí)新增字段完整的 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 對(duì)象轉(zhuǎn) JSON 時(shí),移除屬性跟上面的思路一樣,只需要調(diào)用remove方法即可,這里不再演示。

5. 擴(kuò)展

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

JsonNode

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

6. 總結(jié)

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

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

 

責(zé)任編輯:武曉燕 來源: 碼農(nóng)小胖哥
相關(guān)推薦

2023-02-27 07:37:56

Curl操作SQL

2012-03-21 09:49:42

Java

2021-08-09 13:34:14

Python開發(fā)數(shù)據(jù)

2023-06-08 08:13:43

2019-11-07 15:39:36

數(shù)據(jù)庫MySQL文章

2024-11-18 00:22:34

2025-04-11 10:13:00

數(shù)據(jù)庫APIFastAPI

2012-04-19 10:06:16

ibmdw

2012-04-12 09:23:15

達(dá)夢數(shù)據(jù)庫

2022-08-01 09:44:07

架構(gòu)MySQL數(shù)據(jù)庫

2024-08-29 08:58:30

JPA編寫數(shù)據(jù)操

2009-11-13 15:54:26

ADO.NET數(shù)據(jù)庫操

2021-01-18 14:04:49

java監(jiān)控操作

2024-09-02 09:26:28

2021-07-05 09:24:06

MySQL SQL 語句數(shù)據(jù)庫

2021-05-07 08:03:05

JS動(dòng)態(tài)合并

2020-05-28 16:50:59

源碼分析 MybatisJava

2021-10-20 09:04:21

Spring Beanscope數(shù)據(jù)庫

2025-02-07 09:11:04

JSON對(duì)象策略

2021-04-21 00:10:12

對(duì)象JSON插件
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)