java 實現(xiàn)反射 json動態(tài)轉(zhuǎn)實體類--fastjson
我就廢話不多說了,大家還是直接看代碼吧~
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;} @Overridepublic 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 blocke.printStackTrace();} // Book實體 str --> Book 參數(shù)類String bookStr = 'test.refect.Book';Class<?> bookClazz = null;try {bookClazz = Class.forName(bookStr);} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} // json --> Book 將參數(shù)類轉(zhuǎn)為JSONOBJECTString bookJson = '{'name':'Java'}'; // 實例化參數(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 blocke.printStackTrace();} catch (SecurityException e) {// TODO Auto-generated catch blocke.printStackTrace();} // 執(zhí)行主類try {method.invoke(clazz.newInstance(), t);} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalArgumentException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (InvocationTargetException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (InstantiationException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
補(bǔ)充:使用fastjson 進(jìn)行jsonObject轉(zhuǎn)實體類對象
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.7</version></dependency>
首先引入相關(guān)jar包,
假設(shè)有一個實體類User
public class User{ private int id; private String name; }
然后通過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); }
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。如有錯誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章:
1. 一文讀懂Spring Cloud-Hystrix2. PHP終止腳本執(zhí)行的實例代碼3. idea自定義快捷鍵的方法步驟4. Python Opencv輪廓常用操作代碼實例解析5. Python語言規(guī)范之Pylint的詳細(xì)用法6. 使用python3 實現(xiàn)插入數(shù)據(jù)到mysql7. Python Pandas pandas.read_sql函數(shù)實例用法8. 使用python創(chuàng)建生成動態(tài)鏈接庫dll的方法9. SQL+HTML+PHP 一個簡單論壇網(wǎng)站的綜合開發(fā)案例(注冊、登錄、注銷、修改信息、留言等)10. Python中Selenium模塊的使用詳解

網(wǎng)公網(wǎng)安備