spring.HttpMessageNotReadableException: JSON parse error

實體類如下:

@Value
public class Search{//搜索內容String value;//是否模糊搜索boolean fuzzy = true; //其實這樣寫并不是“默認”模糊搜索,而是“一定是”模糊搜索
}

spring.HttpMessageNotReadableException: JSON parse error: Cannot construct instance of com.erato.xxx.Student (although at least one Creator exists): cannot deserialize from Object value (no-delegate- or property based Creater); nested exception is com.fastetxml.jackson.databind.exc.MismatchedInputException: …

去網上一搜,全都在說沒有是因為沒有空參構造器 NoArgsConstructor。實際上這只是表面。 有時候即使沒有空參構造器也無所謂。

上面情況的問題在于,@value 會給兩個成員變量 member field 都加上 final.

首先明確一下 java 基礎知識點:如果 class 里只有兩個 final 的成員變量 member field. 那 空參 和 全參 兩個構造器是沒法共存的。
空參會警告告訴你給 member field 賦初值(其實不能叫初值,該叫‘永久值’),

@Value
@NoArgsConstructor
public class Search{String value; //報錯,Variable 'value' might not have been initializedboolean fuzzy = true;
}

全參 會警告告訴你不要給 member field 賦初值。

@Value
@AllArgsConstructor
public class Search{String value = ""; boolean fuzzy = true;public Student(String value, boolean fuzzy){this.value = value;//報錯 cannnot assign a value to final variable 'value'this.fuzzy = fuzzy;}
}

情況1

我們來看看讓實體類有 no args constructor.

實體類如下:

@Value
@NoArgsConstructor
public class Search{String value = "";boolean fuzzy = true;
}

為了編譯 compile 不爆紅我們只好這樣。
其實這樣寫等于白寫了,連搜索內容都是寫死的你想想,啥功能都沒實現。不管你前端傳啥,后端的實例 instance 都永遠是是 Student (value=, fuzzy=true). 我們就只先做實驗,非得這么寫。會發生什么呢?

前端傳參:

{"value":"abc","fuzzy":true
}

能通過,但沒什么用。

情況2

@Value
Student {String value;boolean fuzzy;public Student(String value, boolean fuzzy) {this.value = value;this.fuzzy = fuzzy;}
}

前端:

{"value":"abc","fuzzy":true
}

此時并沒有空參構造器,但并沒有報這個錯。可見那些抄來抄去的文章是多么的沒價值。

情況3

@AllArgsConstructor 是非常智能的。事實上它并不是“全參構造器”的意思!! 假設一個賦值了一個沒賦值:

@Value
@AllArgsConstructor
Student {String value;boolean fuzzy = true;public Student(String value, boolean fuzzy) {this.value = value;this.fuzzy = fuzzy;}
}

ctrl+F12 我們會看到只添了一個構造方法 , **Student(String value).
**
你前端不管傳幾個都會報錯:

spring.HttpMessageNotReadableException: JSON parse error: Cannot construct …

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

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

相關文章

GPU Microarch 學習筆記 [1]

WARP GPU的線程從thread grid 到thread block,一個thread block在CUDA Core上執行時,會分成warp執行,warp的顆粒度是32個線程。比如一個thread block可能有1024個線程,分成32個warp執行。 上圖的CTA(cooperative thre…

10條SQL優化技巧

一、一些常見的SQL實踐 (1)負向條件查詢不能使用索引 select * from order where status!0 and stauts!1 not in/not exists都不是好習慣 可以優化為in查詢: select * from order where status in(2,3) (2)前導模…

Codeforces Round 893 (Div. 2)B題題解

文章目錄 [The Walkway](https://codeforces.com/contest/1858/problem/B)問題建模問題分析1.分析所求2.如何快速計算每個商販被去除后的餅干數量代碼 The Walkway 問題建模 給定n個椅子,其中有m個位置存在商販,在商販處必須購買餅干吃,每隔…

Python程序設計——字符串處理的特殊方法

學習目標: 學習如何創建字符串使用len、min和max函數獲取一個字符串的長度、串中的最大和最小的字符使用下標運算符([])訪問字符串中的元素使用截取運算符str[ start:end]從較長的字符串中得到一個子串使用運算符連接兩個字符串,通過*運算符復制一個字符…

【Odroid C4】交叉編譯工具鏈安裝以及QT交叉編譯環境搭建

【Odroid C4】交叉編譯工具鏈安裝以及QT交叉編譯環境搭建 虛擬機環境,UBUNTU20.04 文章目錄 【Odroid C4】交叉編譯工具鏈安裝以及QT交叉編譯環境搭建一、Odroid C4交叉編譯工具鏈安裝二、QT下載及編譯安裝1.QT下載2.交叉編譯QT 配置QtCreator可以[參考](https://bl…

快速入門vue3新特性和新的狀態管理庫pinia

(創作不易,感謝有你,你的支持,就是我前行的最大動力,如果看完對你有幫助,請留下您的足跡) 目錄 Vue3.3新特性 defineOptions defineModel pinia 介紹 與 Vuex 3.x/4.x 的比較 安裝 核心概念 定義…

前饋神經網絡多分類任務

pytorch深度學習的套路都差不多,多看多想多寫多測試,自然就會了。主要的技術還是在于背后的數學思想和數學邏輯。 廢話不多說,上代碼自己看。 import torch import numpy as np import torch.nn as nn import torchvision import torchvisi…

【騰訊云Cloud Studio實戰訓練營】使用Cloud Studio社區版快速構建React完成點餐H5頁面還原

陳老老老板🦸 👨?💻本文專欄:生活(主要講一下自己生活相關的內容) 👨?💻本文簡述:生活就像海洋,只有意志堅強的人,才能到達彼岸。 👨?💻上一篇…

成集云 | 用友U8采購請購單同步釘釘 | 解決方案

源系統成集云目標系統 方案介紹 用友U8是中國用友集團開發和推出的一款企業級管理軟件產品。具有豐富的功能模塊,包括財務管理、采購管理、銷售管理、庫存管理、生產管理、人力資源管理、客戶關系管理等,可根據企業的需求選擇相應的模塊進行集…

什么是原子交換?

安全地在各個區塊鏈網絡之間傳輸資產對于釋放被困流動性并吸引更多用戶進入這一領域至關重要,同時也保持 Web3 的信任最小化核心價值。原子交換是一種讓兩個人在不依賴于中介來促成交易的情況下,在不同的區塊鏈網絡之間交換通證資產的方式。這為 DeFi 用…

Linux硬鏈接和軟連接

1、硬鏈接 硬連接指通過索引節點來進行連接。在 Linux 的文件系統中,保存在磁盤分區中的文件不管是什么類型都給它分配一個編號,稱為索引節點號(Inode Index)。在 Linux 中,多個文件名指向同一索引節點是存在的。比如:A 是 B 的硬…

數據結構之隊列詳解(包含例題)

一、隊列的概念 隊列是一種特殊的線性表,特殊之處在于它只允許在表的前端(front)進行刪除操作,而在表的后端(rear)進行插入操作,和棧一樣,隊列是一種操作受限制的線性表。進行插入操…

【Windows 常用工具系列 5 -- Selenium IDE的使用方法 】

文章目錄 Selenium 介紹Selenium IDE 介紹 Selenium IDE安裝Chrome 瀏覽器安裝Selenium IDE使用 Selenium 介紹 Selenium是一個用于Web應用程序測試的工具。Selenium測試直接運行在瀏覽器中,就像真正的用戶在操作一樣。 Selenium家庭成員有三個,分別是S…

Ubuntu 20.04 與 ROS noetic安裝 gtsam 編譯 LIO-SAM 的適配版本

Ubuntu 20.04 基于 ROS noetic安裝 gtsam, 編譯 LIO-SAM 的適配版本 摘要安裝GTSAM(ros-noetic-gtsam版本)編譯LIO-SAM的適配版本 摘要 本文簡介在 Ubuntu 20.04 下以 ROS noetic 為基礎安裝 GTSAM 并成功編譯 LIO-SAM 的適配版本。 安裝GTSAM(ros-noetic-gtsam版…

騰訊云國際站代充-阿里云ECS怎么一鍵遷移到騰訊云cvm?

今天主要來介紹一下如何通過阿里云國際ECS控制臺一鍵遷移至騰訊云國際CVM。騰訊云國際站云服務器CVM提供全面廣泛的服務內容。無-需-綁-定PayPal,代-充-值騰訊云國際站、阿里云國際站、AWS亞馬遜云、GCP谷歌云,官方授權經銷商!靠譜&#xff0…

視頻匯聚集中存儲EasyCVR平臺調用iframe地址視頻無法播放,該如何解決?

安防監控視頻匯聚平臺EasyCVR基于云邊端一體化架構,具有強大的數據接入、處理及分發能力,可提供視頻監控直播、云端錄像、視頻云存儲、視頻集中存儲、視頻存儲磁盤陣列、錄像檢索與回看、智能告警、平臺級聯、云臺控制、語音對講、AI算法中臺智能分析無縫…

【SpringBoot】中的ApplicationRunner接口 和 CommandLineRunner接口

1. ApplicationRunner接口 用法: 類型: 接口 方法: 只定義了一個run方法 使用場景: springBoot項目啟動時,若想在啟動之后直接執行某一段代碼,就可以用 ApplicationRunner這個接口,并實現接口…

vue3+elementUI-plus實現select下拉框的虛擬滾動

網上查了幾個方案,要不就是不兼容,要不就是不支持vue3, 最終找到一個合適的,并且已上線使用,需要修改一下樣式: 代碼如下: main.js里引用 import vue3-virtual-scroller/dist/vue3-virtual-scroller.css; …

xollam勒索病毒數據恢復|金蝶、用友、管家婆、OA、速達、ERP等軟件數據庫恢復

引言: 數字時代的繁榮與便捷,也孕育著各種網絡安全威脅。其中,.xollam勒索病毒以其毒害性和隱蔽性引發了廣泛關注。本文91數據恢復將為您深入解析.xollam勒索病毒的威脅,探討解密方法,同時分享預防.xollam勒索病毒的關…

Python入門教程23:math模塊的用法

**math是Python 的一個內置模塊,它提供了許多數學函數和常量,用于進行數學計算。**以下是一些常用的math模塊中的函數和常量: math.pi:圓周率π的近似值,約等于3.14159。 math.e:自然對數的底數e的近似值…