RestTemplate 發送的字段第二個大寫字母變成小寫的問題探究

在使用RestTemplate 發送http 請求的時候,發現nDecisonVar 轉換成了ndecisonVar ,但是打印日志用fastjson 打印的沒有問題,換成jackson 打印就有問題。因為RestTemplate 默認使用的jackson 作為json 序列化方式,導致的問題,但是為什么出現這個問題呢?
一直搜網上,其實也沒有個準確的答案而且很多都是錯的,所以我就根據我的理解解讀一下。

實體類使用的Lombok @data 進行的getter setter方法生成,發現lombok 和java bean 的規范有差異
在這里插入圖片描述
JavaBean 的命名規范允許一些特例(如屬性名第二個字母大寫、前兩個字母大寫等),但 Lombok 的設計目標是簡化代碼生成,而非嚴格遵循所有 JavaBean 特例。其核心邏輯如下:

標準化處理:Lombok 默認將屬性名的首字母強制大寫,避免因屬性名格式不規范導致的歧義。
兼容性優先:許多框架(如 Jackson、Gson)在解析 JSON 時依賴 JavaBean 的命名規范,但 Lombok 的默認行為可能與這些框架的預期不一致,導致字段映射錯誤。

那大家有沒有疑惑

為什么呢?

場景 Jackson 的處理策略有兩個
默認 LOWER_CAMEL_CASE 策略 getQWer() → QWer → qWer(首字母小寫)。
LOWER_CASE 策略 getQWer() → QWer → qwer(全小寫)。
顯式使用 @JsonProperty(“qWer”) 無論策略如何,JSON 鍵名始終為 qWer。

網上都是說 當jackson 遇到getQWer的時候會觸發LOWER_CASE一樣的策略,但是實際上不是的,而是jackson 在處理拆分get set 的邏輯區別
在這里插入圖片描述Jackson的處理過程字段 value:方法名 getValue 推斷出屬性名 value,與字段名一致,成功映射。字段 sName:方法名 setSName 推斷出屬性名 sname,而 JSON 中的字段是 sName。由于 sname ≠ sName,Jackson無法找到對應的字段或 setter 方法,導致 sName 未被賦值。如果 JSON 請求體中包含 “sName”: “John”,Jackson會嘗試將值映射到 sname 屬性。 這個操作就很騷

這個博客說getter的非常詳細,大神講解
https://www.cnblogs.com/xuanyumuxiu/p/17272890.html
解決方案

@JsonProperty("nDecisonVar")
Integer nDecisonVar;

不行
在這里插入圖片描述
不對
在這里插入圖片描述
在這里插入圖片描述

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

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

相關文章

C#核心概念解析:析構函數、readonly與this關鍵字

🔍 析構函數:資源清理的最后防線 核心作用 析構函數(~ClassName)在對象銷毀前執行,專用于釋放非托管資源(如文件句柄、非托管內存)。托管資源(如.NET對象)由GC自動回收…

FFmpeg中使用Android Content協議打開文件設備

引言 隨著Android 10引入的Scoped Storage(分區存儲)機制,傳統的文件訪問方式發生了重大變化。FFmpeg作為強大的多媒體處理工具,也在不斷適應Android平臺的演進。本文將介紹如何在FFmpeg 7.0版本中使用Android content協議直接訪…

vue——v-pre的使用

🔰 基礎理解 ? 什么是 v-pre? v-pre 是一個跳過編譯的 Vue 指令。 它告訴 Vue:“這個元素和其子元素中的內容不要被編譯處理,按原樣輸出。” ? 使用場景: 展示原始的 Mustache 插值語法({{ xxx }}&a…

PyTorch中TensorBoardX模塊與torch.utils.tensorboard模塊的對比分析

文章目錄 說明1. 模塊起源與開發背景2. 功能特性對比3. 安裝與依賴關系4. 性能與使用體驗5. 遷移與兼容性策略6. 最佳實踐與建議7. 未來展望8. 結論實際相關信息推薦資源 說明 TensorBoard:獨立工具,只需安裝tensorboard。TensorFlow:非必需…

單片機中斷系統工作原理及定時器中斷應用

文件目錄 main.c #include <REGX52.H> #include "TIMER0.H" #include "KEY.H" #include "DELAY.H"//void Timer0_Init() { // TMOD 0x01; // TL0 64536 % 256; // TH0 64536 / 256; // ET0 1; // EA 1; // TR0 1; //}unsigned char…

Python爬蟲實戰:研究Portia框架相關技術

1. 引言 1.1 研究背景與意義 在大數據時代,網絡數據已成為企業決策、學術研究和社會分析的重要資源。據 Statista 統計,2025 年全球數據總量將達到 175ZB,其中 80% 以上來自非結構化網絡內容。如何高效獲取并結構化這些數據,成為數據科學領域的關鍵挑戰。 傳統爬蟲開發需…

【機器學習基礎】機器學習與深度學習概述 算法入門指南

機器學習與深度學習概述 算法入門指南 一、引言&#xff1a;機器學習與深度學習&#xff08;一&#xff09;定義與區別&#xff08;二&#xff09;發展歷程&#xff08;三&#xff09;應用場景 二、機器學習基礎&#xff08;一&#xff09;監督學習&#xff08;二&#xff09;無…

[C語言初階]掃雷小游戲

目錄 一、原理及問題分析二、代碼實現2.1 分文件結構設計2.2 棋盤初始化與打印2.3 布置雷與排查雷2.4 游戲主流程實現 三、后期優化方向 在上一篇文章中&#xff0c;我們實現了我們的第二個游戲——三子棋小游戲。這次我們繼續結合我們之前所學的所有內容&#xff0c;制作出我們…

ROS云課三分鐘-破壁篇GCompris-一小部分支持Edu應用列表-2025

開啟藍橋云課ROS ROS 機器人操作系統初級教程_ROS - 藍橋云課 安裝和使用GCompris 終端輸入&#xff1a;sudo apt install gcompris sudo apt install gcompris ok&#xff0c;完成即可。 sudo apt install gcompris 如果是平板&#xff0c;秒變兒童學習機。 啟動 流暢運…

Linux系統基礎——是什么、適用在哪里、如何選

一、Linux是什么 Linux最初是由林納斯托瓦茲&#xff08;Linus Torvalds&#xff09;基于個人興趣愛好開發的個人項目&#xff0c;他編寫了最核心的內核&#xff1b;后面為了發展壯大Linux系統他將整個項目開源到GitHub上&#xff0c;可以讓全世界的人都參與到項目的開發維護中…

26、AI 預測性維護 (燃氣輪機軸承) - /安全與維護組件/ai-predictive-maintenance-turbine

76個工業組件庫示例匯總 AI 預測性維護模擬組件 (燃氣輪機軸承) 概述 這是一個交互式的 Web 組件,旨在模擬基于 AI 的預測性維護 (Predictive Maintenance, PdM) 概念,應用于工業燃氣輪機的關鍵部件(例如軸承)。它通過模擬傳感器數據、動態預測剩余使用壽命 (RUL),并根…

el-form 使用el-row el-col對齊 注意事項

1.el-form 使用inline&#xff0c;el-form-item寬度會失效。 2.為了保證el-form-item 和 它內部的el-input 能在一行&#xff0c;要設置el-form-item的label-width <el-form :model"editInspectform"><el-row style"margin-bottom: 20px"><…

mac 安裝 mysql 和 mysqlshell

1. 安裝 mysql https://dev.mysql.com/downloads/mysql/?spma2c6h.12873639.article-detail.4.37474f4dTHdszC 默認mysql未配置環境變量&#xff0c;可以在設置中找到 2. 安裝 mysqlshell https://dev.mysql.com/downloads/shell/ #啟動mysql-shell mysqlsh 3. 使用 mysq…

漏洞檢測與滲透檢驗在功能及范圍上究竟有何顯著差異?

漏洞檢測與滲透檢驗是確保系統安全的重要途徑&#xff0c;這兩種方法各具特色和功效&#xff0c;它們在功能上有著顯著的差異。 目的不同 漏洞掃描的主要任務是揭示系統內已知的安全漏洞和隱患&#xff0c;這就像是對系統進行一次全面的健康檢查&#xff0c;看是否有已知的疾…

機器學習模型度量指標(混淆矩陣、準確率、精確率、召回率、F1分數、ROC曲線、AUC、平均精度均值)

我們研究的是多分類問題&#xff0c;下面所有例子以多分類問題舉例 混淆矩陣&#xff08;Confusion Matrix&#xff09; 混淆矩陣&#xff08; Confusion Matrix &#xff09;是一個表格&#xff0c;用于可視化機器學習模型在分類問題上 的性能。混淆矩陣的行表示實際類別&…

打卡day35

一、模型結構可視化 理解一個深度學習網絡最重要的2點&#xff1a; 了解損失如何定義的&#xff0c;知道損失從何而來----把抽象的任務通過損失函數量化出來了解參數總量&#xff0c;即知道每一層的設計才能退出—層設計決定參數總量 為了了解參數總量&#xff0c;我們需要知…

時序數據庫 TDengine × Superset:一鍵構建你的可視化分析系統

如果你正在用 TDengine 管理時序數據&#xff0c;寫 SQL 查詢沒問題&#xff0c;但一到展示環節就犯難——圖表太基礎&#xff0c;交互不夠&#xff0c;甚至連團隊都看不懂你辛苦分析的數據成果&#xff1f;別擔心&#xff0c;今天要介紹的這個組合&#xff0c;正是為你量身打造…

C# 初學者的 3 種重構模式

(Martin Fowlers Example) 1. 積極使用 Guard Clause&#xff08;保護語句&#xff09; "如果條件不滿足&#xff0c;立即返回。將核心邏輯放在最少縮進的地方。" 概念定義 Guard Clause&#xff08;保護語句&#xff09; 是一種在函數開頭檢查特定條件是否滿足&a…

基于51單片機和8X8點陣屏、獨立按鍵的滑動躲閃類小游戲

目錄 系列文章目錄前言一、效果展示二、原理分析三、各模塊代碼1、8X8點陣屏2、獨立按鍵3、定時器04、定時器1 四、主函數總結 系列文章目錄 前言 用的是普中A2開發板。 【單片機】STC89C52RC 【頻率】12T11.0592MHz 【外設】8X8點陣屏、獨立按鍵 效果查看/操作演示&#xff…

Java面向對象 一

系列文章目錄 Java面向對象 二-CSDN博客 Java面向對象 三-CSDN博客 目錄 系列文章目錄 前言 一、初步認識面向對象 1.類和對象的簡單理解 2.類的構成 二、類的實例化 1.對象的創建 2.對象的初始化 三、this引用的作用 四、構造方法 1.構造方法的提供 2.對象的構…