Jackson庫使用教程

1. Jackson概述
  • 定義: Jackson是一個基于Java的開源JSON解析工具,用于Java對象與JSON數據的互相轉換。
  • 示例JSON:
    {"author": "一路向北_Coding","age": 20,"hobbies": ["coding", "leetcode", "reading"]
    }
    
  • Java類示例:
    class Blog {private String author;private int age;private String[] hobbies;
    }
    
2. Jackson的優勢
  • 社區活躍: 更新迭代快,社區支持好。
  • 流行度: 根據Github統計,Jackson是最流行的序列化工具之一。
  • 依賴少: 穩定性強,API豐富。
  • Spring默認: Jackson是Spring系列的默認JSON解析器。
3. Jackson使用入門
  • 引入依賴: Maven項目中添加jackson-corejackson-annotationsjackson-databind依賴。Spring項目只需引入spring-boot-starter-web
  • API封裝: 將Jackson API封裝為工具類,便于使用。
4. Jackson常用API
  • Java對象轉JSON:
    public static String toString(Object obj, String default) {try {return MAPPER.writeValueAsString(obj);} catch (JsonProcessingException e) {LOGGER.error("toString error" + e.getMessage());return default;}
    }
    
  • JSON轉Java對象:
    • 帶泛型:
      public static <T> T toObject(String jsonString, TypeReference<T> typeReference) {return toObject(jsonString, null, typeReference);
      }
      
    • 不帶泛型:
      public static <T> T toObject(String jsonString, T default, Class<T> clazz) {try {return MAPPER.readValue(jsonString, clazz);} catch (Exception e) {LOGGER.error("toObject error:" + e.getMessage());return default;}
      }
      
  • JSON反序列化為List:
    public static <T> List<T> ofList(String jsonString, Class<T> clazz) {if (StringUtil.isBlank(jsonString)) {return null;}CollectionType javaType = MAPPER.getTypeFactory().constructCollectionType(List.class, clazz);try {return MAPPER.readValue(jsonString, javaType);} catch (JsonProcessingException e) {LOGGER.error("toList error:" + e.getMessage());return null;}
    }
    
  • JSON反序列化為Map:
    public static <K, V> Map<K, V> ofMap(String jsonString, Class<K> keyClazz, Class<V> valueClazz) {if (StringUtil.isBlank(jsonString)) {return null;}MapType javaType = MAPPER.getTypeFactory().constructMapType(Map.class, keyClazz, valueClazz);try {return MAPPER.readValue(jsonString, javaType);} catch (JsonProcessingException e) {LOGGER.error("ofMap:" + e.getMessage(), e);return null;}
    }
    
5. 總結
  • Jackson除了基本的序列化和反序列化功能外,還有更多高級用法,如JsonNode模型、Jackson注解等。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/41550.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/41550.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/41550.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

昇思25天學習打卡營第13天|linchenfengxue

Diffusion擴散模型 關于擴散模型&#xff08;Diffusion Models&#xff09;有很多種理解&#xff0c;本文的介紹是基于denoising diffusion probabilistic model &#xff08;DDPM&#xff09;&#xff0c;DDPM已經在&#xff08;無&#xff09;條件圖像/音頻/視頻生成領域取得…

小蜜蜂WMS與小蜜蜂WMS對接集成根據條件獲取客戶信息列表(分頁)連通新增客戶信息(小蜜蜂讀寫測試)

小蜜蜂WMS與小蜜蜂WMS對接集成根據條件獲取客戶信息列表&#xff08;分頁&#xff09;連通新增客戶信息(小蜜蜂讀寫測試) 接通系統&#xff1a;小蜜蜂WMS 天津市小蜜蜂計算機技術有限公司&#xff08;acbee&#xff0c;TianJinACBEEComputerTechnologyCo.,Ltd&#xff09;成立于…

基于圖像處理的滑塊驗證碼匹配技術

滑塊驗證碼是一種常見的驗證碼形式&#xff0c;通過拖動滑塊與背景圖像中的缺口進行匹配&#xff0c;驗證用戶是否為真人。本文將詳細介紹基于圖像處理的滑塊驗證碼匹配技術&#xff0c;并提供優化代碼以提高滑塊位置偏移量的準確度&#xff0c;尤其是在背景圖滑塊陰影較淺的情…

上海市計算機學會競賽平臺2023年2月月賽丙組平分數字(一)

題目描述 給定 &#x1d45b;n 個整數&#xff1a;&#x1d44e;1,&#x1d44e;2,??,&#x1d44e;&#x1d45b;a1?,a2?,?,an?&#xff0c;請判定能否將它們分成兩個部分&#xff08;不得丟棄任何數字&#xff09;&#xff0c;每部分的數字之和一樣大。 輸入格式 第…

模擬,CF 570C - Replacement

一、題目 1、題目描述 2、輸入輸出 2.1輸入 2.2輸出 3、原題鏈接 570C - Replacement 二、解題報告 1、思路分析 1、長為cnt的連續串的最小操作次數為cnt - 1 2、每次將一個非. 替換為. f要么增加1要么增加2 只有前后都是 . 的時候會增加2 同理&#xff0c;當我們將一…

STM32外擴SRAM及用法

一.概述 一般單片機有片內的RAM&#xff0c;但都不多&#xff0c;比如&#xff1a;STM32F407ZGT6 自帶了 192K 字節的 RAM&#xff0c;對一般應用來說&#xff0c;已經足夠了&#xff0c;不過在一些對內存要求高的場合&#xff0c;比如做華麗效果的 GUI&#xff0c;處理大量數據…

swagger的接口文檔導入到yapi上

一、訪問swagger接口 swagger集成到項目后&#xff0c;通過http:\\ip:port/swagger-ui.html 訪問。 說明&#xff1a;這里的路徑是基于swagger2。如果用swagger3&#xff0c;需要用swagger3的路徑進行訪問。 訪問如圖&#xff1a; 這就是swagger接口首頁。如果想導入到yapi上…

module_param_named 內核啟動時模塊參數實現原理

基于上節內核啟動參數實現原理內容, 其中對early_param的實現流程做了分析, 已基本清晰. 但有不少的參數是在內核模塊中聲明的, 具體賦值流程也值得一探究竟. nomodeset 裝過Linux系統的同學可能多少有看到過nomodeset這個參數, 解決一些顯卡點不亮Linux的問題. 那么這個nomo…

AI繪畫Stable Diffusion 新手入門教程:萬字長文解析Lora模型的使用,快速上手Lora模型!

大家好&#xff0c;我是設計師阿威 今天給大家講解一下AI繪畫Stable Diffusion 中的一個重要模型—Lora模型&#xff0c;如果還有小伙伴沒有SD安裝包的&#xff0c;可以看我往期入門教程2024最新超強AI繪畫Stable Diffusion整合包安裝教程&#xff0c;零基礎入門必備&#xff…

React Hooks --- 分享自己開發中常用的自定義的Hooks (1)

為什么要使用自定義 Hooks 自定義 Hooks 是 React 中一種復用邏輯的機制&#xff0c;通過它們可以抽離組件中的邏輯&#xff0c;使代碼更加簡潔、易讀、易維護。它們可以在多個組件中復用相同的邏輯&#xff0c;減少重復代碼。 1、useThrottle 代碼 import React,{ useRef,…

三葉青圖像識別研究簡概

三葉青圖像識別研究總概 文章目錄 前言一、整體目錄介紹二、前期安排三、構建圖像分類數據集四、模型訓練準備五、遷移學習模型六、在測試集上評估模型精度七、可解釋性分析、顯著性分析八、圖像分類部署九、樹莓派部署十、相關補充總結 前言 本系列文章為近期所做項目研究而作…

工作助手VB開發筆記(2)

今天繼續講功能 2.功能 2.9開機自啟 設置程序隨windows系統啟動&#xff0c;其實就是就是將程序加載到注冊表 Public Sub StartRunRegHKLM()REM HKEY_LOCAL_MACHINE \ SOFTWARE \ WOW6432Node \ Microsoft \ Windows \ CurrentVersion \ RunDim strName As String Applicat…

教師商調函流程詳解

作為一名教師&#xff0c;您是否曾面臨過工作調動的困惑&#xff1f;當您決定邁向新的教育環境&#xff0c;是否清楚整個商調函流程的每一個細節&#xff1f;今天&#xff0c;就讓我們一起來探討這一過程&#xff0c;確保您能夠順利地完成工作調動。 首先需要確定新調入的學校已…

裁員風波中的項目經理,如何自洽?

最近都在擔心企業裁員&#xff0c;那么項目經理會不會也有被優化的風險呢&#xff1f; 答案是&#xff0c;一定會&#xff01; 今天從3個方面給大家闡述一下項目經理崗位的發展現狀以及未來的趨勢 01 項目經理被優化的可能性大嗎&#xff1f; 02 哪一類項目經理會被最先裁員…

CSDN導入本地md文件圖片不能正常回顯問題

標題 搭建圖像倉庫獲取圖片URL 路徑替換 因為服務器讀取不到本地圖片&#xff0c;故不能正常回顯&#xff0c;因此想要正常回顯圖片&#xff0c;我們首先要做的就是搭建一個可以存放圖片的服務器&#xff0c;像你可以選擇購買一個云服務器、FastDFS圖片服務器、Minio多云對象存…

信息收集-arping

信息收集-arping 簡介 arping 是一個用于發送 ARP 請求和接收 ARP 回復的工具。它通常用于檢查網絡中的 IP 地址是否被使用&#xff0c;或發現網絡中的重復 IP 地址。arping 工具類似于 ping 命令&#xff0c;但它使用的是 ARP 協議而不是 ICMP 協議。在 Kali Linux 中&#…

娛樂圈驚爆已婚男星劉端端深夜幽會

【娛樂圈驚爆&#xff01;已婚男星劉端端深夜幽會&#xff0c;竟是《慶余年》二皇子“戲外風云”】在這個信息爆炸的時代&#xff0c;娛樂圈的每一次風吹草動都能瞬間點燃公眾的熱情。今日&#xff0c;知名娛樂博主劉大錘的一則預告如同投入湖中的巨石&#xff0c;激起了層層漣…

紙電混合階段,如何在線上實現紙電會檔案的協同管理?

隨著國家政策的出臺和引導&#xff0c;電子會計檔案的管理越來越規范&#xff0c;電子會計檔案建設成為打通財務數字化最后一公里的重要一環。但是&#xff0c;當前很多企業的財務管理仍處于電子檔案和紙質檔案并行的階段&#xff0c;如何能將其建立合理清晰關聯&#xff0c;統…

《數字圖像處理-OpenCV/Python》第17章:圖像的特征描述

《數字圖像處理-OpenCV/Python》第17章&#xff1a;圖像的特征描述 本書京東 優惠購書鏈接 https://item.jd.com/14098452.html 本書CSDN 獨家連載專欄 https://blog.csdn.net/youcans/category_12418787.html 第17章&#xff1a;圖像的特征描述 特征檢測與匹配是計算機視覺的…

javascript v8編譯器的使用記錄

我的機器是MacOS Mx系列。 一、v8源碼下載構建 1.1 下載并更新depot_tools git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git export PATH/path/to/depot_tools:$PATH 失敗的話可能是網絡問題&#xff0c;可以試一下是否能ping通&#xff0c;連…