java 實(shí)現(xiàn)反射 json動(dòng)態(tài)轉(zhuǎn)實(shí)體類--fastjson
我就廢話不多說(shuō)了,大家還是直接看代碼吧~
package test.refect; public class Student { // 姓名 private String name; // 年齡 private String age; // 住址 private String address; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { return "Student [name=" + name + ", age=" + age + ", address=" + address + "]"; } public void sayHello(Book book){ System.out.println(book.getName()); } }
package test.refect; public class Book { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
package test.refect; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import com.alibaba.fastjson.JSONObject; public class ExecuteWithFastJson { public static <T> void main(String[] args) { // Student str --> Student 主類 String str = "test.refect.Student"; Class<?> clazz = null; try { clazz = Class.forName(str); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } // Book實(shí)體 str --> Book 參數(shù)類 String bookStr = "test.refect.Book"; Class<?> bookClazz = null; try { bookClazz = Class.forName(bookStr); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } // json --> Book 將參數(shù)類轉(zhuǎn)為JSONOBJECT String bookJson = "{\"name\":\"Java\"}"; // 實(shí)例化參數(shù)類 T t = (T) JSONObject.parseObject(bookJson, bookClazz); // 將參數(shù)類注入到主類 Method method =null; try { method = clazz.getDeclaredMethod("sayHello", bookClazz); } catch (NoSuchMethodException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } // 執(zhí)行主類 try { method.invoke(clazz.newInstance(), t); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InstantiationException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
補(bǔ)充:使用fastjson 進(jìn)行jsonObject轉(zhuǎn)實(shí)體類對(duì)象
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.7</version> </dependency>
首先引入相關(guān)jar包,
假設(shè)有一個(gè)實(shí)體類User
public class User{ private int id; private String name; }
然后通過(guò)fastJson進(jìn)行類型轉(zhuǎn)換
public static void main(String[] args){ String userString = "{"id":1,"name","lz"}"; JSONObject userJson = JSONObject.parseObject(userString); User user = JSON.toJavaObject(userJson,User.class); }
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
關(guān)于ThreadLocal對(duì)request和response的用法說(shuō)明
這篇文章主要介紹了關(guān)于ThreadLocal對(duì)request和response的用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08Java面試之限流的實(shí)現(xiàn)方式小結(jié)
限流是指在各種應(yīng)用場(chǎng)景中,通過(guò)技術(shù)和策略手段對(duì)數(shù)據(jù)流量、請(qǐng)求頻率或資源消耗進(jìn)行有計(jì)劃的限制,本文為大家整理了常見的限流的實(shí)現(xiàn)方式,有需要的可以參考下2024-02-02SpringMVC @RequestBody屬性名大寫字母注入失敗的解決
這篇文章主要介紹了SpringMVC @RequestBody屬性名大寫字母注入失敗的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04淺談基于Token的WEB后臺(tái)認(rèn)證機(jī)制
這篇文章主要介紹了淺談基于Token的WEB后臺(tái)認(rèn)證機(jī)制,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-12-12Java實(shí)現(xiàn)斷點(diǎn)下載服務(wù)端與客戶端的示例代碼
這篇文章主要為大家介紹了如何實(shí)現(xiàn)服務(wù)端(Spring Boot)與客戶端(Android)的斷點(diǎn)下載與下載續(xù)傳功能,文中的示例代碼講解詳細(xì),需要的可以參考一下2022-08-08IDEA2022.2的簡(jiǎn)介、下載與安裝、配置教程
IDEA是JetBrains公司推出一個(gè)集成開發(fā)工具,是Java開發(fā)工具中的翹楚,基于這個(gè)開發(fā)工具可以快速開發(fā)我們的Java相關(guān)項(xiàng)目,本文重點(diǎn)給大家介紹IDEA2022.2的簡(jiǎn)介、下載與安裝、初步配置,感興趣的朋友一起看看吧2022-11-11