java 实现反射 json动态转实体类--fastjson
我就废话不多说了,大家还是直接看代码吧~
packagetest.refect; publicclassStudent{ //姓名 privateStringname; //年龄 privateStringage; //住址 privateStringaddress; publicStringgetName(){ returnname; } publicvoidsetName(Stringname){ this.name=name; } publicStringgetAge(){ returnage; } publicvoidsetAge(Stringage){ this.age=age; } publicStringgetAddress(){ returnaddress; } publicvoidsetAddress(Stringaddress){ this.address=address; } @Override publicStringtoString(){ return"Student[name="+name+",age="+age+",address="+address+"]"; } publicvoidsayHello(Bookbook){ System.out.println(book.getName()); } }
packagetest.refect; publicclassBook{ privateStringname; publicStringgetName(){ returnname; } publicvoidsetName(Stringname){ this.name=name; } }
packagetest.refect; importjava.lang.reflect.InvocationTargetException; importjava.lang.reflect.Method; importcom.alibaba.fastjson.JSONObject; publicclassExecuteWithFastJson{ publicstaticvoidmain(String[]args){ //Studentstr-->Student主类 Stringstr="test.refect.Student"; Class>clazz=null; try{ clazz=Class.forName(str); }catch(ClassNotFoundExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } //Book实体str-->Book参数类 StringbookStr="test.refect.Book"; Class>bookClazz=null; try{ bookClazz=Class.forName(bookStr); }catch(ClassNotFoundExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } //json-->Book将参数类转为JSONOBJECT StringbookJson="{\"name\":\"Java\"}"; //实例化参数类 Tt=(T)JSONObject.parseObject(bookJson,bookClazz); //将参数类注入到主类 Methodmethod=null; try{ method=clazz.getDeclaredMethod("sayHello",bookClazz); }catch(NoSuchMethodExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }catch(SecurityExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } //执行主类 try{ method.invoke(clazz.newInstance(),t); }catch(IllegalAccessExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }catch(IllegalArgumentExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }catch(InvocationTargetExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }catch(InstantiationExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } }
补充:使用fastjson进行jsonObject转实体类对象
com.alibaba fastjson 1.2.7
首先引入相关jar包,
假设有一个实体类User
publicclassUser{ privateintid; privateStringname; }
然后通过fastJson进行类型转换
publicstaticvoidmain(String[]args){ StringuserString="{"id":1,"name","lz"}"; JSONObjectuserJson=JSONObject.parseObject(userString); Useruser=JSON.toJavaObject(userJson,User.class); }
以上为个人经验,希望能给大家一个参考,也希望大家多多支持毛票票。如有错误或未考虑完全的地方,望不吝赐教。