【Json】fastjson與jackson常用操作記錄

来源:https://www.cnblogs.com/weknow619/archive/2018/08/13/9466198.html
-Advertisement-
Play Games

本文只是記錄fastjson、jackson一些常用的操作方法,沒作比較,網上寫比較的文章很多啦。 1、對象轉Json串 2、Json串轉Json對象 3、Json串轉Java對象 4、獲取Json對象的key 5、獲取Json對象的value 6、創建一Json對象並設置key\value 在這點 ...


本文只是記錄fastjson、jackson一些常用的操作方法,沒作比較,網上寫比較的文章很多啦。

1、對象轉Json串

// fastjson                                                            
String objStr = JSON.toJSONString(obj);  // 預設去掉屬性為Null值的

// jackson
ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); // 預設不會去掉Null的,要自己配 
String objStr = mapper.writeValueAsString(obj);

 

2、Json串轉Json對象

// fastjson
JSONObject objJson = JSON.parseObject(objStr);

// jackson
ObjectMapper mapper = new ObjectMapper();
JsonNode objJson = mapper.readTree(objStr);

 

3、Json串轉Java對象

// fastjson
Clazz obj = JSON.parseObject(jsonStr, Clazz.class);

// jackson
ObjectMapper mapper = new ObjectMapper();
Clazz obj = mapper.readValue(jsonStr, Clazz.class);

 

4、獲取Json對象的key

// fastjson
Set<String> keySet = jsonObj.keySet();
String key = keySet.iterator().next();  // 得到第一個key

// jackson
Iterator<String> keys = jsonObj.fieldNames();
String key = fieldNames.next();  // 得到第一個key

 

5、獲取Json對象的value

// fastjson
jsonObj.get("key")

// jackson
jsonObj.path("key")

 

6、創建一Json對象並設置key\value

// fastjson
JSONObject jsonObj = new JSONObject();
jsonObj.put("key", oldJsonObj);

// jackson
ObjectMapper mapper = new ObjectMapper();
ObjectNode jsonObj = mapper.createObjectNode();
jsonObj.set("key", oldJsonObj);

在這點上,fastjson是直接一個JSONObject搞定,而jackson中JsonNode並沒有直接能設置key/value的方法,這裡要使用ObjectNode,jackson提供了樹模型(tree model)來生成和解析json。如果想訪問並對部分屬性作修改的操作,樹模型是很好的選擇,ObjectNode繼承於JsonNode,下麵給個例子:

ObjectMapper mapper = new ObjectMapper(); 
// 創建ObjectNode 
ObjectNode studentNode = mapper.createObjectNode(); 
// 添加屬性 
studentNode.put("name","xiaoming"); 
studentNode.put("age",18); 

ObjectNode addressNode = mapper.createObjectNode(); 
addressNode.put("street","guangzhou"); 

// 設置子節點 
studentNode.set("addr",addressNode); 
// path查找節點 
JsonNode searchNode = studentNode.path("street"); 
// 刪除屬性 
((ObjectNode) studentNode).remove("addr"); 
// 讀取
JsonNode rootNode = mapper.readTree(studentNode.toString()); 
// JsonNode轉java對象 
Student student = mapper.treeToValue(studentNode, Student.class); 
// java對象轉JsonNode 
JsonNode node = mapper.valueToTree(student);

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 原文鏈接:https://bbs.huaweicloud.com/blogs/53c0c3509b7a11e89fc57ca23e93a89f 我坦白我是標題黨,SB只是 的簡寫。 一. SASS/SCSS ,也稱為 ,是CSS預編譯語言的一種,常見的預編譯語言還包括 ,`Stylus 變數定義 函 ...
  • jQuery 常用核心方法 .each() 遍歷一個jQuery對象,為每個匹配元素執行一個函數 $.extend() jQuery.extend([deep,] target [, object1 ] [, objectN ] )把多個對象進行合併,把所有的屬性添加到第一個對象上 當我們提供兩個或 ...
  • 區別 jQuery 選擇器得到的 jQuery對象 和 原生JS 中的document.getElementById() document.querySelector取得的 DOM對象 是兩種不同類型,兩者是不等價的。jQuery 無法使用 原生DOM對象的方法,原生DOM對象 也不能使用 jQue ...
  • jQuery DOM 操作 創建元素 只需要把DOM字元串傳入$方法即可返回一個 jQuery 對象 添加元素 .append() 在 a 標簽裡面添加內容是b的p標簽 JSBin 其他例子 .appendTo() 相反,把對象插入到目標元素尾部。即在 a 標簽 裡面添加內容是b的p標簽 JSBin ...
  • 摘要:本文是我在學習前端的過程中整理的一些常用css屬性,部分是css3新增的,因能力有限,文中如有錯誤,歡迎提出,我會及時修改。希望對大家有幫助! CSS屬性 CSS屬性 1 1. css顏色屬性 5 1.1. 字體顏色 5 1.2. 背景顏色 5 2. 頁面佈局相關屬性 5 2.1. displ ...
  • 常用的background背景屬性有: background-color 設置顏色作為對象背景顏色background-image 設置圖片作為背景圖片background-repeat 設置背景平鋪重覆方向background-attachment 設置或檢索背景圖像是隨對象內容滾動還是固定的。b ...
  • 微服務隨想 Intro 在如今微服務的思想和架構流行的今天,以及結合最近在公司實施的微服務化,想談談自己對微服務的理解及看法,可能並不太對,如果你覺得哪些有問題,歡迎指出,一起探討學習。 下麵我將從微服務的三個層面去探討 1. 什麼是微服務(What) 1. 為什麼要微服務(Why) 1. 微服務化 ...
  • 原因: 以前學習Spring的時候著重學習過AOP概念,但是一直也沒有用上,唯一碰到過的就是Spring內置的事務管理。 概念: 基本概念這個博主解釋的比較清楚,如果有不懂的可以去看一下。https://blog.csdn.net/csh624366188/article/details/76517 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...