java中map與實(shí)體類(lèi)的相互轉(zhuǎn)換操作
java中map與實(shí)體類(lèi)的相互轉(zhuǎn)換
1. 在 pom.xml 中引入依賴(lài)包
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.54</version> </dependency>
2. 在控制類(lèi)中引入
import com.alibaba.fastjson.JSON;
3. 類(lèi)型轉(zhuǎn)換
JSON.parseObject(JSON.toJSONString(源數(shù)據(jù)), 轉(zhuǎn)換后數(shù)據(jù)類(lèi)型.class);
// 將 Map 轉(zhuǎn)換為 實(shí)體類(lèi) User user = JSON.parseObject(JSON.toJSONString(user01), User.class); System.out.println(user); // 將 實(shí)體類(lèi) 轉(zhuǎn)換為 Map Map map = JSON.parseObject(JSON.toJSONString(user), Map.class); System.out.println(map);
4. 轉(zhuǎn)換成功
將map轉(zhuǎn)換為實(shí)體類(lèi)的兩種方法
今天寫(xiě)項(xiàng)目時(shí)需要把map中的值寫(xiě)到對(duì)應(yīng)的實(shí)體類(lèi)中去,以前在遇到同樣的問(wèn)題時(shí)因?yàn)樾枰臄?shù)據(jù)只要那么幾個(gè)字段,所以通過(guò)get和set的方式感覺(jué)還行不是特別麻煩,而這次需要幾乎所有字段,一共有十幾個(gè),如果還是才采用這用方式實(shí)在太麻煩。
查閱資料后發(fā)現(xiàn)了兩個(gè)不錯(cuò)的方法
方法一
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.30</version> </dependency>
JSON.parseObject(JSON.toJSONString(Map<String, ? extends Object>), Class<T> bean);
通過(guò)fastjson先將map轉(zhuǎn)換成json字符串,然后再將json字符串轉(zhuǎn)換成實(shí)體類(lèi)。
方法二
<dependency> <groupId>commons-beanutils</groupId> <artifactId>commons-beanutils</artifactId> <version>1.9.3</version> </dependency>
BeanUtils.populate(Object bean, Map<String, ? extends Object> map)
這個(gè)方法會(huì)遍歷map<key, value>中的key,如果bean中有這個(gè)屬性,就把這個(gè)key對(duì)應(yīng)的value值賦給bean的屬性。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
RocketMq同組消費(fèi)者如何自動(dòng)設(shè)置InstanceName
這篇文章主要介紹了RocketMq同組消費(fèi)者如何自動(dòng)設(shè)置InstanceName問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06詳解Java Proxy動(dòng)態(tài)代理機(jī)制
今天給大家?guī)?lái)的是關(guān)于Java的相關(guān)知識(shí),文章圍繞著Java動(dòng)態(tài)代理機(jī)制展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06三分鐘帶你掌握J(rèn)ava開(kāi)發(fā)圖片驗(yàn)證碼功能方法
這篇文章主要來(lái)為大家詳細(xì)介紹Java實(shí)現(xiàn)開(kāi)發(fā)圖片驗(yàn)證碼的具體方法,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下2023-02-02JVM內(nèi)存模型知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給大家分享了關(guān)于JVM內(nèi)存模型的學(xué)習(xí)心得以及相關(guān)知識(shí)點(diǎn)總結(jié),有興趣的朋友們跟著學(xué)習(xí)下。2019-05-05打包部署若依(RuoYi)SpringBoot后端和Vue前端圖文教程
若依是一個(gè)使用Spring Boot作為后端和Vue.js作為前端的全棧應(yīng)用開(kāi)發(fā)平臺(tái),下面這篇文章主要給大家介紹了關(guān)于打包部署若依(RuoYi)SpringBoot后端和Vue前端的相關(guān)資料,需要的朋友可以參考下2024-05-05easyexcel讀取excel合并單元格數(shù)據(jù)的操作代碼
這篇文章主要介紹了easyexcel讀取excel合并單元格數(shù)據(jù)的操作代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05Mybatis-Plus使用@TableField實(shí)現(xiàn)自動(dòng)填充日期的代碼示例
數(shù)據(jù)庫(kù)中經(jīng)常有create_time,update_time兩個(gè)字段,在代碼中設(shè)置時(shí)間有點(diǎn)太麻煩了?mybatis-plus可以幫我們自動(dòng)填充,本文主要介紹了Mybatis-Plus使用@TableField實(shí)現(xiàn)自動(dòng)填充日期的代碼示例,感興趣的可以了解一下2022-04-04