java 實(shí)現(xiàn)反射 json動態(tài)轉(zhuǎn)實(shí)體類--fastjson
更新時間:2021年02月19日 09:57:37 作者:HL_123123
這篇文章主要介紹了java 實(shí)現(xiàn)反射 json動態(tài)轉(zhuǎn)實(shí)體類--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; } @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í)體類對象
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.7</version> </dependency>
首先引入相關(guān)jar包,
假設(shè)有一個實(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)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
關(guān)于ThreadLocal對request和response的用法說明
這篇文章主要介紹了關(guān)于ThreadLocal對request和response的用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08Java面試之限流的實(shí)現(xiàn)方式小結(jié)
限流是指在各種應(yīng)用場景中,通過技術(shù)和策略手段對數(shù)據(jù)流量、請求頻率或資源消耗進(jìn)行有計(jì)劃的限制,本文為大家整理了常見的限流的實(shí)現(xiàn)方式,有需要的可以參考下2024-02-02SpringMVC @RequestBody屬性名大寫字母注入失敗的解決
這篇文章主要介紹了SpringMVC @RequestBody屬性名大寫字母注入失敗的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-04-04Java實(shí)現(xiàn)斷點(diǎn)下載服務(wù)端與客戶端的示例代碼
這篇文章主要為大家介紹了如何實(shí)現(xiàn)服務(wù)端(Spring Boot)與客戶端(Android)的斷點(diǎn)下載與下載續(xù)傳功能,文中的示例代碼講解詳細(xì),需要的可以參考一下2022-08-08